def maintainAccountView(request, client_id=""):
    if 'user_data' not in request.session:
        return HttpResponseRedirect("/login")

    staff_id = str(
        request.session['user_data']['user_info']['staff_and_agents_id'])
    # send request to api
    params = '{"staff_id":' + staff_id + ', "client_id":"' + str(
        client_id) + '"}'
    r = Request()
    data = r.get(params, 'clients/getClients',
                 request.session['user_data']['tokens']['access_token'])
    data = data.json()
    if data['isSuccess']:
        # get rate plans
        r = Request()
        rate_plans = r.get(
            params, 'plans/getRatePlans',
            request.session['user_data']['tokens']['access_token'])
        data['rate_plans'] = rate_plans.json()['data']['rate_plans']

        context = {
            'user_data': request.session['user_data']['user_info'],
            'data': data
        }
        return render(request, 'portal/account/maintain.html', context)

    return HttpResponseRedirect("/login")
def getWhitelabel(request, clientId):
    staff_id = str(
        request.session['user_data']['user_info']['staff_and_agents_id'])

    params = {"staff_id": staff_id, "client_id": clientId}

    # send request to api
    r = Request()
    if request.GET['wl_enabled'] and request.GET['wl_enabled'] == 'False':

        if 'action' in request.GET and request.GET['action'] == 'read':
            return render(request,
                          'portal/account/controls_sidebar/wl_form.html')

        r = r.post(json.dumps(params), 'prices/getDefaultPrices',
                   request.session['user_data']['tokens']['access_token'])
        data = r.json()
        data['data']['prices_default']['client_id'] = clientId
        return render(request,
                      'portal/account/controls_sidebar/enable_wl.html',
                      {'white_label': data['data']['prices_default']})

    r = Request()
    r = r.get(json.dumps(params), 'clients/getWhitelabel',
              request.session['user_data']['tokens']['access_token'])
    data = r.json()
    if 'action' in request.GET and request.GET['action'] == 'read':
        return render(request, 'portal/account/controls_sidebar/wl_form.html',
                      {'white_label': data['data']['white_label']})
    else:
        return render(request,
                      'portal/account/controls_sidebar/enable_wl.html',
                      {'white_label': data['data']['white_label']})
def getStandingCharges(request, clientId):
    if 'user_data' not in request.session:
        return HttpResponseRedirect("/login")

    staff_id = str(
        request.session['user_data']['user_info']['staff_and_agents_id'])

    params = {"staff_id": staff_id, "client_id": clientId}

    # send request to api
    if 'standing_charge_id' in request.GET:
        if request.GET['standing_charge_id'] != '0':
            params['standing_charge_id'] = request.GET['standing_charge_id']
        else:
            return render(request,
                          'portal/account/tabs/st_charges_detail.html',
                          {'standing_charges': {
                              'client_id': clientId
                          }})

    r = Request()
    r = r.get(json.dumps(params), 'clients/getStandingCharges',
              request.session['user_data']['tokens']['access_token'])
    data = r.json()
    if 'standing_charge_id' in request.GET:  # mobile detail.html
        return render(
            request, 'portal/account/tabs/st_charges_detail.html',
            {'standing_charges': data['data']['standing_charges'][0]})
    else:
        return HttpResponse(
            json.dumps({'aaData': data['data']['standing_charges']}))
def getTollFree(request, clientId):
    if 'user_data' not in request.session:
        return HttpResponseRedirect("/login")

    staff_id = str(
        request.session['user_data']['user_info']['staff_and_agents_id'])
    # send request to api
    params = {"staff_id": staff_id, "client_id": clientId}
    if 'id' in request.GET:
        if request.GET['id'] != '0':
            params['client_toll_free_id'] = request.GET['id']
        else:
            return render(request, 'portal/account/tabs/toll_free_detail.html',
                          {'toll_free': {
                              'client_id': clientId
                          }})

    params = json.dumps(params)
    r = Request()
    r = r.get(params, 'clients/getTollFree',
              request.session['user_data']['tokens']['access_token'])
    data = r.json()
    if 'id' in request.GET:  # mobile detail.html
        return render(request, 'portal/account/tabs/toll_free_detail.html',
                      {'toll_free': data['data']['toll_free'][0]})
    elif 'type' in request.GET and request.GET['type'] == 'dropdown':
        return render(request, 'portal/account/dropdown_list.html',
                      {'data': data})
    else:
        return HttpResponse(json.dumps({'aaData': data['data']['toll_free']}))
def getContacts(request, clientId):
    if 'user_data' not in request.session:
        return HttpResponseRedirect("/login")

    staff_id = str(
        request.session['user_data']['user_info']['staff_and_agents_id'])
    # send request to api
    params = {"staff_id": staff_id, "client_id": clientId}
    if 'contactId' in request.GET:
        if request.GET['contactId'] != '0':
            params['contact_id'] = request.GET['contactId']
        else:
            return render(request,
                          'portal/account/tabs/cont_contact_detail.html',
                          {'contact': {
                              'client_id': clientId
                          }})

    params = json.dumps(params)
    r = Request()
    r = r.get(params, 'clients/getContacts',
              request.session['user_data']['tokens']['access_token'])
    data = r.json()
    if 'contactId' in request.GET:
        return render(request, 'portal/account/tabs/cont_contact_detail.html',
                      {'contact': data['data']['contacts'][0]})
    else:
        return HttpResponse(json.dumps({'aaData': data['data']['contacts']}))
def getOneoffinvoices(request, clientId):
    if 'user_data' not in request.session:
        return HttpResponseRedirect("/login")

    staff_id = str(
        request.session['user_data']['user_info']['staff_and_agents_id'])
    # send request to api
    params = '{"staff_id":' + staff_id + ',"client_id":"' + clientId + '", "limit":"1"}'
    r = Request()
    r = r.get(params, 'clients/getOneOffInvoices',
              request.session['user_data']['tokens']['access_token'])
    data = r.json()
    oneoffinvoices = []
    for index in data['data']['oneoffinvoices']:
        temp = {}
        temp['invoice_number'] = index['invoice_number']
        temp['invoice_date'] = index['invoice_date']
        temp['oi_description'] = index['oi_description']
        temp['oi_gross_amount'] = '$' + str(index['oi_gross_amount'])
        temp['credits'] = '$ 0.00'
        temp['payments'] = '$ 0.00'
        temp['total_amount'] = '$' + str(index['oi_gross_amount'])
        temp['oi_transaction_id'] = index['oi_transaction_id']

        oneoffinvoices.append(temp)
    return HttpResponse(json.dumps({'aaData': oneoffinvoices}))
def getClients(request, partner_id=""):
    staff_id = str(
        request.session['user_data']['user_info']['staff_and_agents_id'])
    # user search string
    params = '{"staff_id":' + staff_id + ', "partner_id":' + partner_id + '}'
    r = Request()
    r = r.get(params, 'clients/getClients',
              request.session['user_data']['tokens']['access_token'])
    data = r.json()
    return HttpResponse(json.dumps({'aaData': data['data']['clients']}))
def getServiceProviders(request):
    if 'user_data' not in request.session:
        return HttpResponseRedirect("/login")

    staff_id = str(
        request.session['user_data']['user_info']['staff_and_agents_id'])
    # send request to api
    params = '{"staff_id":' + staff_id + '}'
    r = Request()
    r = r.get(params, 'providers/getServiceProviders',
              request.session['user_data']['tokens']['access_token'])
    data = r.json()
    return render(request, 'portal/account/dropdown_list.html', {'data': data})
def getPayments(request, clientId):
    if 'user_data' not in request.session:
        return HttpResponseRedirect("/login")

    staff_id = str(
        request.session['user_data']['user_info']['staff_and_agents_id'])
    # send request to api
    params = '{"staff_id":' + staff_id + ',"client_id":"' + clientId + '"}'
    r = Request()
    r = r.get(params, 'clients/getPayments',
              request.session['user_data']['tokens']['access_token'])
    data = r.json()
    return render(request, 'portal/account/tabs/acc_payments.html',
                  {'data': data})
def getAccountSummary(request, clientId):
    if 'user_data' not in request.session:
        return HttpResponseRedirect("/login")

    staff_id = str(
        request.session['user_data']['user_info']['staff_and_agents_id'])
    # send request to api
    params = json.dumps({"staff_id": staff_id, "client_id": clientId})
    r = Request()
    r = r.get(params, 'clients/getAccountSummary',
              request.session['user_data']['tokens']['access_token'])
    data = r.json()
    return render(request, 'portal/account/tabs/acc_account_summary.html',
                  {'data': data})
def searchPartner(request):
    if request.method == "POST":
        if 'user_data' not in request.session:
            return HttpResponseRedirect("/login")

        staff_id = str(
            request.session['user_data']['user_info']['staff_and_agents_id'])
        # user search string
        search_str = request.POST['search_str']
        params = '{"staff_id":' + staff_id + ', "limit":"20", "search_str":"' + search_str + '"}'
        r = Request()
        r = r.get(params, 'staff/getAllStaffs',
                  request.session['user_data']['tokens']['access_token'])
        data = r.json()
        return render(request, 'portal/components/search_result.html',
                      {'data': data})
def maintainPartnerView(request, partner_id=""):
    if 'user_data' not in request.session:
        return HttpResponseRedirect("/login")

    staff_id = str(
        request.session['user_data']['user_info']['staff_and_agents_id'])

    # send request to api
    params = '{"staff_id":' + staff_id + ', "partner_id":' + partner_id + '}'
    r = Request()
    r = r.get(params, 'staff/getStaff',
              request.session['user_data']['tokens']['access_token'])
    data = r.json()
    if data['isSuccess']:
        context = {
            'user_data': request.session['user_data']['user_info'],
            'data': data
        }
        return render(request, 'portal/partner_account/maintain.html', context)
    return HttpResponseRedirect("/login")
def getAreaNames(request, area_code=""):
    if 'user_data' not in request.session:
        return HttpResponseRedirect("/login")

    staff_id = str(
        request.session['user_data']['user_info']['staff_and_agents_id'])
    # send request to api
    if area_code != "":
        params = '{"staff_id":' + staff_id + ', "area_code":' + area_code + '}'
    else:
        params = '{"staff_id":' + staff_id + '}'

    r = Request()
    r = r.get(params, 'area/getAreaNames',
              request.session['user_data']['tokens']['access_token'])

    if area_code == "":
        data = r.json()
        return render(request, 'portal/account/dropdown_list.html',
                      {'data': data})
    else:
        return HttpResponse(r)