from flask import Blueprint, request
from flask_cors import *
import re

from service.bodySitePageService import introData, tblData, searchTaxa, searchPhenotype, searchBodysite, searchProject, \
    searchSample

bodySite = Blueprint('bodySite', __name__)
CORS(bodySite, support_credentials=True)


@bodySite.route('/bodysite', methods=['GET'])
def bodySiteData():
    site = request.args.get('site')
    siteIntro = introData(site)
    siteTbl = tblData(site)
    result = {
        'siteIntro': siteIntro,
        'siteTbl': siteTbl
    }
    return result


@bodySite.route('/searchAll', methods=['GET'])
def searchAll():
    option = request.args.get('option')
    searchInput = request.args.get('searchInput')
    if option == 'taxa':
        searchOpt = idOrName(option, searchInput)
        searchResult = searchTaxa(searchInput, searchOpt)
    elif option == 'phenotype':
        searchOpt = idOrName(option, searchInput)
        searchResult = searchPhenotype(searchInput, searchOpt)
    elif option == 'bodysite':
        searchResult = searchBodysite(searchInput)
    elif option == 'project':
        searchResult = searchProject(searchInput)
    else:
        searchResult = searchSample(searchInput)
    result = {
        'searchResult': searchResult
    }
    return result


def idOrName(option, searchInput):
    if option == 'taxa':
        pattern = re.compile("/^\w/")
        if pattern.match(searchInput):
            return 'name'
        else:
            return 'id'
    else:
        pattern = re.compile("\d")
        if pattern.findall(searchInput):
            return 'id'
        else:
            return 'name'
