MetaPhase-Consulting/State-TalentMAP-API

View on GitHub
talentmap_api/fsbid/services/bidding_tool.py

Summary

Maintainability
A
3 hrs
Test Coverage
F
27%
import logging
from talentmap_api.fsbid.services import common as services
from talentmap_api.common.common_helpers import service_response


logger = logging.getLogger(__name__)

# ======================== Get Bidding Tool List ========================

def get_bidding_tools(data, jwt_token):
    '''
    Get Bidding Tool List
    '''
    args = {
        "proc_name": "qry_lstbiddingtool",
        "package_name": "PKG_WEBAPI_WRAP_SPRINT101",
        "request_body": data,
        "request_mapping_function": bidding_tools_request_mapping,
        "response_mapping_function": bidding_tools_response_mapping,
        "jwt_token": jwt_token,
    }
    return services.send_post_back_office(
        **args
    )

def bidding_tools_request_mapping(request):
    return {
        'PV_API_VERSION_I': '',
        'PV_AD_ID_I': '',
    }

def bidding_tools_response_mapping(response):
    def bidding_tools(x):
        return {
            'location_code': x.get('POS_LOCATION_CODE'),
            'dsv_name': x.get('DSV_NAME'),
            'bt_ind': x.get('BT_IND'),
        }
    def success_mapping(x):
        return list(map(bidding_tools, x.get('QRY_LSTBIDDINGTOOL_REF')))
        
    return service_response(response, 'Bidding Tool List Data', success_mapping)


# ======================== Get Bidding Tool ========================

def get_bidding_tool(pk, jwt_token):
    '''
    Get Bidding Tool
    '''
    args = {
        "proc_name": "qry_getbiddingtool",
        "package_name": "PKG_WEBAPI_WRAP_SPRINT101",
        "request_body": pk,
        "request_mapping_function": bidding_tool_request_mapping,
        "response_mapping_function": bidding_tool_response_mapping,
        "jwt_token": jwt_token,
    }
    return services.send_post_back_office(
        **args
    )

def bidding_tool_request_mapping(request):
    return {
        'PV_API_VERSION_I': '',
        'PV_AD_ID_I': '',
        'i_dsc_cd': request,
    }

def bidding_tool_response_mapping(response):
    def locations(x):
        return {
            'code': x.get('POS_LOCATION_CODE'),
            'state_country': x.get('GSA_STATE_COUNTRY'),
            'dsv_nm': x.get('DSV_NM'),
        }
    def statuses(x):
        return {
            'code': x.get('BTS_CODE'),
            'description': x.get('BTS_DESC_TEXT'),
        }
    def tods(x):
        return {
            'code': x.get('TOD_CODE'),
            'description': x.get('TOD_DESC_TEXT'),
        }
    def unaccompanied_statuses(x):
        return {
            'code': x.get('US_CODE'),
            'description': x.get('US_DESC_TEXT'),
        }
    def housing_types(x):
        return {
            'code': x.get('HT_CODE'),
            'description': x.get('HT_DESC_TEXT'),
        }
    def quarters_types(x):
        return {
            'code': x.get('QT_CODE'),
            'description': x.get('QT_DESC_TEXT'),
        }
    def ehcps(x):
        return {
            'code': x.get('EHCP_CODE'),
            'description': x.get('EHCP_SHORT_DESC_TEXT'),
        }
    def success_mapping(x):
        return {
            'snd': x.get('O_BT_SERVICE_NEEDS_DIFF_FLG'),
            'hds': x.get('O_BT_MOST_DIFF_TO_STAFF_FLG'),
            'rr_point': x.get('O_BT_REST_RELAXATION_PNT_TEXT'),
            'apo_fpo_dpo': x.get('O_BT_APO_OR_FPO_FLG'),
            'cola': x.get('O_BT_COST_OF_LIVING_ADJUST_NUM'),
            'differential_rate': x.get('O_BT_DIFFERENTIAL_RATE_NUM'),
            'danger_pay': x.get('O_BT_DANGER_PAY_NUM'),
            'medical': x.get('O_BT_MEDICAL_REMARKS_TEXT'),
            'remarks': x.get('O_BT_REMARKS_TEXT'),
            'climate_zone': x.get('O_BT_CLIMATE_ZONE_NUM'),
            'consumable_allowance': x.get('O_BT_CONSUMABLE_ALLOWANCE_FLG'),
            'fm_fp': x.get('O_BT_FOREIGN_MADE_PROV_FLG'),
            'quarters_remark': x.get('O_BT_QUARTERS_REMARK_TEXT'),
            'special_ship_allowance': x.get('O_BT_SPEC_SHIP_ALLOW_TEXT'),
            'school_year': x.get('O_BT_SCHOOL_YEAR_TEXT'),
            'grade_education': x.get('O_BT_GRADE_EDUCATION_TEXT'),
            'efm_employment': x.get('O_BT_EFM_EMPLOYMENT_TXT'),
            'inside_efm_employment': x.get('O_BT_INSIDE_EFM_EMPLOYMENT_FLG'),
            'outside_efm_employment': x.get('O_BT_OUTSIDE_EFM_EMP_FLG'),

            'location': x.get('O_DSC_CD'),
            'unaccompanied_status': x.get('O_US_CODE'),
            'status': x.get('O_BTS_CODE'),
            'quarters': x.get('O_QT_CODE'),
            'housing': x.get('O_HT_CODE'),
            'efm_issues': x.get('O_EHCP_CODE'),
            'tod': x.get('O_TOD_CODE'),
            
            'updater_id': x.get('O_BT_UPDATE_ID'),
            'updated_date': x.get('O_BT_UPDATE_DATE'),

            'locations': list(map(locations, x.get('QRY_LSTLOCATIONS_REF'))),
            'statuses': list(map(statuses, x.get('QRY_LSTSTATUS_REF'))),
            'tods': list(map(tods, x.get('QRY_LSTTODS_REF'))),
            'unaccompanied_statuses': list(map(unaccompanied_statuses, x.get('QRY_LSTUNACCOMPSTATUS_REF'))),
            'housing_types': list(map(housing_types, x.get('QRY_LSTHOUSINGTYPE_REF'))),
            'quarters_types': list(map(quarters_types, x.get('QRY_LSTQUARTERSTYPE_REF'))),
            'ehcps': list(map(ehcps, x.get('QRY_LSTEHCP_REF'))),
        }
    return service_response(response, 'Bidding Tool Data', success_mapping)


# ======================== Delete Bidding Tool ========================

def delete_bidding_tool(data, jwt_token):
    '''
    Delete Bidding Tool
    '''
    args = {
        "proc_name": "act_delbiddingtool",
        "package_name": "PKG_WEBAPI_WRAP_SPRINT101",
        "request_body": data,
        "request_mapping_function": delete_bidding_tool_request_mapping,
        "response_mapping_function": delete_bidding_tool_response_mapping,
        "jwt_token": jwt_token,
    }
    return services.send_post_back_office(
        **args
    )

def delete_bidding_tool_request_mapping(request):
    return {
        'PV_API_VERSION_I': '',
        'PV_AD_ID_I': '',
        'i_dsc_cd': request.get('location'),
        'I_BT_UPDATE_ID': request.get('updater_id'),
        'I_BT_UPDATE_DATE': request.get('updated_date')
    }

def delete_bidding_tool_response_mapping(response):
    return service_response(response, 'Bidding Tool Delete')


# ======================== Create Bidding Tool ========================

def base_action_request(request):
    return {
        'PV_API_VERSION_I': '',
        'PV_AD_ID_I': '',
        'i_dsc_cd': request.get('location'),
        'i_bt_service_needs_diff_flg': request.get('snd'),
        'i_bts_code': request.get('status'),
        'i_bt_most_diff_to_staff_flg': request.get('hds'),
        'i_tod_code': request.get('tod'),
        'i_bt_rest_relaxation_pnt_text': request.get('rr_point'),
        'i_us_code': request.get('unaccompanied_status'),
        'i_bt_apo_or_fpo_flg': request.get('apo_fpo_dpo'),
        'i_bt_cost_of_living_adjust_num': request.get('cola'),
        'i_bt_differential_rate_num': request.get('differential_rate'),
        'i_bt_danger_pay_num': request.get('danger_pay'),
        'i_bt_remarks_text': request.get('remarks'),
        'i_bt_climate_zone_num': request.get('climate_zone'),
        'i_ht_code': request.get('housing'),
        'i_qt_code': request.get('quarters'),
        'i_bt_consumable_allowance_flg': request.get('consumable_allowance'),
        'i_bt_quarters_remark_text': request.get('quarters_remark'),
        'i_bt_special_ship_allow_text': request.get('special_ship_allowance'),
        'i_bt_foreign_made_prov_flg': request.get('fm_fp'),
        'i_bt_school_year_text': request.get('school_year'),
        'i_bt_grade_education_text': request.get('grade_education'),
        'i_bt_efm_employment_txt': request.get('efm_employment'),
        'i_bt_inside_efm_employment_flg': request.get('inside_efm_employment'),
        'i_bt_outside_efm_emp_flg': request.get('outside_efm_employment'),
        'i_ehcp_code': request.get('efm_issues'),
        'i_bt_medical_remarks_text': request.get('medical')
    }

def create_bidding_tool(data, jwt_token):
    '''
    Create Bidding Tool
    '''
    args = {
        "proc_name": 'act_addbiddingtool',
        "package_name": 'PKG_WEBAPI_WRAP_SPRINT101',
        "request_mapping_function": create_bidding_tool_request_mapping,
        "response_mapping_function": create_bidding_tool_response_mapping,
        "jwt_token": jwt_token,
        "request_body": data,
    }
    return services.send_post_back_office(
        **args
    )

def create_bidding_tool_request_mapping(request):
    return base_action_request(request)

def create_bidding_tool_response_mapping(data):
    return service_response(data, 'Bidding Tool Create')

# ======================== Get Bidding Tool Create Data ========================

def get_bidding_tool_create_data(data, jwt_token):
    '''
    Get Bidding Tool Create Data
    '''
    args = {
        "proc_name": "qry_addBiddingTool",
        "package_name": "PKG_WEBAPI_WRAP_SPRINT101",
        "request_body": data,
        "request_mapping_function": bidding_tool_create_data_request_mapping,
        "response_mapping_function": bidding_tool_create_data_response_mapping,
        "jwt_token": jwt_token,
    }
    return services.send_post_back_office(
        **args
    )

def bidding_tool_create_data_request_mapping(request):
    return {
        'PV_API_VERSION_I': '',
        'PV_AD_ID_I': '',
    }

def bidding_tool_create_data_response_mapping(response):
    def locations(x):
        return {
            'code': x.get('POS_LOCATION_CODE'),
            'state_country': x.get('GSA_STATE_COUNTRY'),
            'dsv_nm': x.get('DSV_NM'),
        }
    def statuses(x):
        return {
            'code': x.get('BTS_CODE'),
            'description': x.get('BTS_DESC_TEXT'),
        }
    def tods(x):
        return {
            'code': x.get('TOD_CODE'),
            'description': x.get('TOD_DESC_TEXT'),
        }
    def unaccompanied_statuses(x):
        return {
            'code': x.get('US_CODE'),
            'description': x.get('US_DESC_TEXT'),
        }
    def housing_types(x):
        return {
            'code': x.get('HT_CODE'),
            'description': x.get('HT_DESC_TEXT'),
        }
    def quarters_types(x):
        return {
            'code': x.get('QT_CODE'),
            'description': x.get('QT_DESC_TEXT'),
        }
    def ehcps(x):
        return {
            'code': x.get('EHCP_CODE'),
            'description': x.get('EHCP_SHORT_DESC_TEXT'),
        }
    def success_mapping(x):
        return {
            'locations': list(map(locations, x.get('QRY_LSTLOCATIONS_REF'))),
            'statuses': list(map(statuses, x.get('QRY_LSTSTATUS_REF'))),
            'tods': list(map(tods, x.get('QRY_LSTTODS_REF'))),
            'unaccompanied_statuses': list(map(unaccompanied_statuses, x.get('QRY_LSTUNACCOMPSTATUS_REF'))),
            'housing_types': list(map(housing_types, x.get('QRY_LSTHOUSINGTYPE_REF'))),
            'quarters_types': list(map(quarters_types, x.get('QRY_LSTQUARTERSTYPE_REF'))),
            'ehcps': list(map(ehcps, x.get('QRY_LSTEHCP_REF'))),
        }
    return service_response(response, 'Bidding Tool Create Data', success_mapping)

# ======================== Edit Bidding Tool ========================

def edit_bidding_tool(data, jwt_token):
    '''
    Edit Bidding Tool
    '''
    args = {
        "proc_name": 'act_modbiddingtool',
        "package_name": 'PKG_WEBAPI_WRAP_SPRINT101',
        "request_mapping_function": edit_bidding_tool_request_mapping,
        "response_mapping_function": edit_bidding_tool_response_mapping,
        "jwt_token": jwt_token,
        "request_body": data,
    }
    return services.send_post_back_office(
        **args
    )

def edit_bidding_tool_request_mapping(request):
    return {
        **base_action_request(request),
        'I_BT_UPDATE_ID': request.get('updater_id'),
        'I_BT_UPDATE_DATE': request.get('updated_date'),
    }

def edit_bidding_tool_response_mapping(data):
    return service_response(data, 'Bidding Tool Edit')