Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require_dependency 'markazuna/di_container'
- class DoctorReservationsController < ApplicationController
- include Markazuna::INJECT['doctor_reservation_service']
- include Markazuna::INJECT['doctor_service']
- include Markazuna::INJECT['schedule_service']
- include Markazuna::INJECT['rs_api_resources']
- skip_before_action :verify_authenticity_token
- # before_action :authenticate_core_user!
- # before_action :authenticate
- # skip_before_action :verify_authenticity_token
- # before_action :set_reservation, only: [:show, :edit, :update, :destroy]
- wrap_parameters :reservation, include: [:user_id,
- :key,
- :doctor_name,
- :doctor_id,
- :hospital_name,
- :hospital_id,
- :reservation_date,
- :reservation_time,
- :user_name,
- :user_phone,
- :user_email,
- :user_birthday,
- :schedule_id,
- :source,
- :price,
- :funnel_name,
- :gender,
- :is_new_patient,
- :id_number,
- :address,
- :payment_method,
- :occupation,
- :religion,
- :fit_to_fly_letter,
- :blood_type,
- :legal_guardian_name,
- :info_schedule,
- :booking_id,
- :birthday,
- :bitrix_id,
- :bitrix_schedule_date,
- :bitrix_status,
- :booking_status,
- :booking_recommendation,
- :booking_version,
- :confirmation_date,
- :confirmation_pdf_url,
- :confirmation_status,
- :confirmation_url,
- :email,
- :feedback_status,
- :rejection_reason,
- :rejection_reason_detail,
- :feedback_url,
- :follow_up_by,
- :hospital,
- :last_bitrix_update,
- :note,
- :patient_name,
- :phone,
- :queue_number,
- :schedule_date,
- :schedule_time,
- :update_by,
- :is_dashboard,
- :user]
- def doctor_form1
- Rails.logger.info "================Start form 1 and before fetch flag========================"
- reservation_updated_params = add_dashboard_flag_and_status(reservation_form_params)
- Rails.logger.info "================after flag and before rs-api form 1 reservation========================"
- response = rs_api_resources.post_data_to_json("form_1_doctor_reservation",reservation_updated_params)
- # rs_api_message = get_response_message(response)
- if response.try(:code)!=200
- data = response
- render json: data, status: response.code
- return
- end
- if reservation_updated_params["is_dashboard"]== false
- reservation_updated_params["booking_id"]=get_booking_id(response)
- reservation_form_log = my_reservation_form_log_params(reservation_updated_params)
- if doctor_reservation_service.create_reservation_log(reservation_form_log)
- Rails.logger.info "================after create reservation log========================"
- end
- data = response
- render json: data, status: response.code
- return
- end
- Rails.logger.info "================after form 1 & before get profile doctor========================"
- response_speciality = rs_api_resources.get_data("get_profile_doctor",speciality_params)
- Rails.logger.info "================after doctor profile & before get profile doctor========================"
- reservation_updated_params["booking_id"]=get_booking_id(response)
- reservation_updated_params["doctor_speciality"]=get_doctor_speciality(response_speciality)
- reservation_form = my_reservation_form_params(reservation_updated_params)
- doctor_form = doctor_form_params
- Rails.logger.info "================before create doctor========================"
- if doctor_service.create_doctor(doctor_form)
- Rails.logger.info "================after create doctor and before schedule========================"
- # puts"----------------------doctor succeeded---------------------------"
- end
- schedule_form = schedule_form_params
- if schedule_service.create_schedule(schedule_form)
- Rails.logger.info "================after create schedule and before reservation========================"
- # puts"----------------------schedule succeeded--------------------------"
- end
- # Rails.logger.info "reservation_form.inspect"
- # Rails.logger.info reservation_form.inspect
- # Rails.logger.info "end reservation_form.inspect"
- if doctor_reservation_service.create_reservation(reservation_form)
- Rails.logger.info "================after create reservation========================"
- prefilled_fields = doctor_reservation_service.prefilled_fields
- data = {
- booking_id: reservation_form.booking_id,
- message: "Success",
- results: prefilled_fields
- }
- render json: data, status: 200
- else
- if reservation_form.errors.full_messages.length > 1
- # Rails.logger.info reservation_form.errors.full_messages
- reservation_form.errors.clear
- reservation_form.errors.add(:base, 'Mohon Lengkapi Data Pasien')
- end
- error_messages = reservation_form.errors.full_messages
- data = {message: error_messages.join(', ')}
- render json: data, status: 422
- end
- end
- def doctor_form2
- Rails.logger.info "================Start form 2 and before fetch param========================"
- my_form = reservation_form_params
- rs_api_param= rs_api_form_2
- Rails.logger.info "================after fetch and before rs-api form 2 reservation========================"
- response = rs_api_resources.post_data_to_json("form_2_doctor_reservation",rs_api_param)
- if response.try(:code)!=200
- data = response
- render json: data, status: response.code
- return
- end
- Rails.logger.info my_form["hospital_id"]
- is_dashboard_result = check_is_dashboard(my_form["hospital_id"])
- if is_dashboard_result == false
- Rails.logger.info "================before update reservation log========================"
- my_form["form_2_rs_api_status"] = response
- reservation_form_log = my_reservation_form_log_params(my_form)
- if doctor_reservation_service.update_reservation_additional_log(reservation_form_log)
- Rails.logger.info "================after update reservation log========================"
- end
- data = response
- render json: data, status: response.code
- return
- end
- Rails.logger.info "================after rs-api form 2 reservation and before update========================"
- my_form["form_2_rs_api_status"] = response
- reservation_form = my_reservation_form_params(my_form)
- result = doctor_reservation_service.update_reservation_additional(reservation_form)
- Rails.logger.info "================after update========================"
- if result
- render :json => { meta: {status: '200'}, payload: true}
- else
- error_messages = reservation_form.errors.full_messages
- render :json => { meta: {status: '422'}, payload: 'failed', message: error_messages.join(', ')}, status: 422
- end
- end
- def doctor_form1_v_200
- reservation_updated_params = add_dashboard_flag_and_status(reservation_form_params)
- # Rails.logger.info "================inilah parameter yg dikirim ke rs-api========================"
- # Rails.logger.info JSON.pretty_generate(reservation_updated_params)
- response = rs_api_resources.post_data_to_json("form_1_doctor_reservation_v_200",reservation_updated_params)
- # rs_api_message = get_response_message(response)
- if response.try(:code)!=200
- data = response
- render json: data, status: response.code
- return
- end
- if reservation_updated_params["is_dashboard"]== false
- reservation_updated_params["booking_id"]=get_booking_id(response)
- reservation_form_log = my_reservation_form_log_params_v200(reservation_updated_params)
- if doctor_reservation_service.create_reservation_log_v200(reservation_form_log)
- Rails.logger.info "================after create reservation v200 log========================"
- end
- data = response
- render json: data, status: response.code
- return
- end
- response_speciality = rs_api_resources.get_data("get_profile_doctor",speciality_params)
- reservation_updated_params["booking_id"]=get_booking_id(response)
- reservation_updated_params["doctor_speciality"]=get_doctor_speciality(response_speciality)
- reservation_form = my_reservation_form_params_v200(reservation_updated_params)
- doctor_form = doctor_form_params
- if doctor_service.create_doctor(doctor_form)
- # puts"----------------------doctor succeeded---------------------------"
- end
- schedule_form = schedule_form_params
- if schedule_service.create_schedule(schedule_form)
- # puts"----------------------schedule succeeded--------------------------"
- end
- # Rails.logger.info "reservation_form.inspect"
- # Rails.logger.info reservation_form.inspect
- # Rails.logger.info "end reservation_form.inspect"
- if doctor_reservation_service.create_reservation_v200(reservation_form)
- prefilled_fields = doctor_reservation_service.prefilled_fields
- data = {
- booking_id: reservation_form.booking_id,
- message: "Success",
- results: prefilled_fields
- }
- render json: data, status: 200
- else
- if reservation_form.errors.full_messages.length > 1
- # Rails.logger.info JSON.pretty_generate(reservation_form.errors)
- reservation_form.errors.clear
- reservation_form.errors.add(:base, 'Mohon Lengkapi Data Pasien')
- end
- error_messages = reservation_form.errors.full_messages
- data = {message: error_messages.join(', ')}
- render json: data, status: 422
- end
- end
- def doctor_form2_v_200
- my_form = reservation_form_params
- rs_api_param= rs_api_form_2
- response = rs_api_resources.post_data_to_json("form_2_doctor_reservation_v_200",rs_api_param)
- if response.try(:code)!=200
- data = response
- render json: data, status: response.code
- return
- end
- is_dashboard_result = check_is_dashboard(my_form["hospital_id"])
- if is_dashboard_result == false
- Rails.logger.info "================before update reservation log========================"
- my_form["form_2_rs_api_status"] = response
- reservation_form_log = my_reservation_form_log_params_v200(my_form)
- if doctor_reservation_service.update_reservation_additional_log(reservation_form_log)
- Rails.logger.info "================after update reservation v200 log========================"
- end
- data = response
- render json: data, status: response.code
- return
- end
- Rails.logger.info "================before update reservation is dashboard========================"
- my_form["form_2_rs_api_status"] = response
- reservation_form = my_reservation_form_params_v200(my_form)
- result = doctor_reservation_service.update_reservation_additional(reservation_form)
- if result
- render :json => { meta: {status: '200'}, payload: true}
- else
- error_messages = reservation_form.errors.full_messages
- render :json => { meta: {status: '422'}, payload: 'failed', message: error_messages.join(', ')}, status: 422
- end
- end
- def doctor_form1_v_210
- rs_api_param= rs_api_form_1_v210
- response = rs_api_resources.post_data_to_json("form_1_doctor_reservation_v_210",rs_api_param)
- render json: response, status: response.code
- return
- end
- def doctor_form2_v_210
- reservation_updated_params = add_dashboard_flag_and_status(reservation_form_params)
- # Rails.logger.info "================inilah parameter yg dikirim ke rs-api========================"
- # Rails.logger.info JSON.pretty_generate(reservation_updated_params)
- response = rs_api_resources.post_data_to_json("form_2_doctor_reservation_v_210",reservation_updated_params)
- # rs_api_message = get_response_message(response)
- if response.try(:code)!=200
- render json: response, status: response.code
- return
- end
- if reservation_updated_params["is_dashboard"]== false
- reservation_updated_params["booking_id"]=get_booking_id(response)
- reservation_form_log = my_reservation_form_log_params_v210(reservation_updated_params)
- if doctor_reservation_service.create_reservation_log(reservation_form_log)
- Rails.logger.info "================after create reservation v210 log========================"
- end
- data = response
- render json: data, status: response.code
- return
- end
- response_speciality = rs_api_resources.get_data("get_profile_doctor",speciality_params)
- reservation_updated_params["booking_id"]=get_booking_id(response)
- reservation_updated_params["doctor_speciality"]=get_doctor_speciality(response_speciality)
- reservation_form = my_reservation_form_params_v210(reservation_updated_params)
- doctor_form = doctor_form_params
- if doctor_service.create_doctor(doctor_form)
- # puts"----------------------doctor succeeded---------------------------"
- end
- schedule_form = schedule_form_params
- if schedule_service.create_schedule(schedule_form)
- # puts"----------------------schedule succeeded--------------------------"
- end
- # Rails.logger.info "reservation_form.inspect"
- # Rails.logger.info reservation_form.inspect
- # Rails.logger.info "end reservation_form.inspect"
- if doctor_reservation_service.create_reservation(reservation_form)
- # prefilled_fields = doctor_reservation_service.prefilled_fields
- data = {
- booking_id: reservation_form.booking_id,
- meta: {status: '200'},
- payload: true
- }
- render json: data, status: 200
- else
- if reservation_form.errors.full_messages.length > 1
- # Rails.logger.info JSON.pretty_generate(reservation_form.errors)
- reservation_form.errors.clear
- reservation_form.errors.add(:base, 'Mohon Lengkapi Data Pasien')
- end
- error_messages = reservation_form.errors.full_messages
- data = {message: error_messages.join(', ')}
- render json: data, status: 422
- end
- end
- def doctor_form1_web
- rs_api_param= rs_api_form_1_v210
- response = rs_api_resources.post_data_to_json("form_1_doctor_reservation_web",rs_api_param)
- render json: response, status: response.code
- return
- end
- def doctor_form2_web
- reservation_updated_params = add_dashboard_flag_and_status(reservation_form_params)
- reservation_updated_params_rs_api={}
- reservation_updated_params_rs_api['reservation']=reservation_updated_params
- Rails.logger.debug "================inilah parameter yg dikirim ke rs-api========================"
- Rails.logger.debug reservation_updated_params.inspect
- response = rs_api_resources.post_data_to_json("form_2_doctor_reservation_web",reservation_updated_params_rs_api)
- # rs_api_message = get_response_message(response)
- Rails.logger.debug "==============hasil dari response form 2 web=================="
- Rails.logger.debug response.inspect
- if response.try(:code)!=200
- render json: response, status: response.code
- return
- end
- if reservation_updated_params["is_dashboard"]== false
- reservation_updated_params["booking_id"]=get_booking_id(response)
- reservation_form_log = my_reservation_form_log_params_v210(reservation_updated_params)
- if doctor_reservation_service.create_reservation_log(reservation_form_log)
- Rails.logger.info "================after create reservation v200 log========================"
- end
- data = response
- render json: data, status: response.code
- return
- end
- response_speciality = rs_api_resources.get_data("get_profile_doctor",speciality_params)
- reservation_updated_params["booking_id"]=get_booking_id(response)
- reservation_updated_params["doctor_speciality"]=get_doctor_speciality(response_speciality)
- reservation_form = my_reservation_form_params_v210(reservation_updated_params)
- doctor_form = doctor_form_params
- if doctor_service.create_doctor(doctor_form)
- # puts"----------------------doctor succeeded---------------------------"
- end
- schedule_form = schedule_form_params
- if schedule_service.create_schedule(schedule_form)
- # puts"----------------------schedule succeeded--------------------------"
- end
- # Rails.logger.info "reservation_form.inspect"
- # Rails.logger.info reservation_form.inspect
- # Rails.logger.info "end reservation_form.inspect"
- if doctor_reservation_service.create_reservation(reservation_form)
- # prefilled_fields = doctor_reservation_service.prefilled_fields
- data = {
- booking_id: reservation_form.booking_id,
- meta: {status: '200'},
- payload: true
- }
- render json: data, status: 200
- else
- if reservation_form.errors.full_messages.length > 1
- # Rails.logger.info JSON.pretty_generate(reservation_form.errors)
- reservation_form.errors.clear
- reservation_form.errors.add(:base, 'Mohon Lengkapi Data Pasien')
- end
- error_messages = reservation_form.errors.full_messages
- data = {message: error_messages.join(', ')}
- render json: data, status: 422
- end
- end
- def update_lead_internal
- my_lead_form = lead_form_params
- rs_api_update_status_param = rs_api_update_status
- response = rs_api_resources.post_data_to_json("update_status_doctor_reservation",rs_api_update_status_param)
- rs_api_message = get_response_message(response)
- if response.try(:code)!=200
- render :json => { meta: {status: response.code}, payload: 'failed', message: rs_api_message}, status: response.code
- return
- end
- my_lead_form["update_booking_rs_api_status"] = response
- my_lead_form["approval_status_user"] = current_core_user.fullname
- my_lead_form = doctor_reservation_service.lead_parameter_update(my_lead_form)
- doctor_reservation_lead_form = my_update_lead_form_params(my_lead_form)
- result = doctor_reservation_service.update_lead(doctor_reservation_lead_form)
- if result
- render :json => { meta: {status: '200'}, payload: true}
- else
- error_messages = doctor_reservation_lead_form.errors.full_messages
- render :json => { meta: {status: '422'}, payload: 'failed', message: error_messages.join(', ')}, status: 422
- end
- end
- def update_lead
- doctor_reservation_lead_form = lead_reservation_form_params
- result = doctor_reservation_service.update_lead(doctor_reservation_lead_form)
- if result
- render :json => { meta: {status: '200'}, payload: true}
- else
- error_messages = doctor_reservation_lead_form.errors.full_messages
- render :json => { meta: {status: '422'}, payload: 'failed', message: error_messages.join(', ')}, status: 422
- end
- end
- def cancel_acknowledgement
- my_form = status_form_params
- my_form["is_cancel_acknowledged"] = true
- doctor_reservation_update_status = status_update_form_params(my_form)
- result = doctor_reservation_service.update_lead(doctor_reservation_update_status)
- if result
- render :json => { meta: {status: '200'}, payload: true}
- else
- error_messages = doctor_reservation_lead_form.errors.full_messages
- render :json => { meta: {status: '422'}, payload: 'failed', message: error_messages.join(', ')}, status: 422
- end
- end
- private
- def data_not_processed
- "Data not processed"
- end
- def new_status
- "new"
- end
- def cancelled
- "cancelled"
- end
- def confirmed
- "confirmed"
- end
- def set_reservation
- @reservation = Reservation::DoctorReservation.find(reservation_form_params[:id])
- end
- def status_form_params
- params.require(:reservation).permit(
- :booking_id)
- end
- def lead_form_params
- params.require(:reservation).permit(
- :user_id,
- :key,
- :user,
- :doctor_name,
- :doctor_speciality,
- :hospital,
- :patient_name,
- :schedule_date,
- :schedule_time,
- :phone,
- :email,
- :birthday,
- :follow_up_by,
- :follow,
- :note,
- :source,
- :funnel_name,
- :booking_version,
- :bitrix_id,
- :bitrix_status,
- :last_bitrix_update,
- :gender,
- :queue_number,
- :booking_id,
- :confirmation_status,
- :confirmation_date,
- :confirmation_url,
- :bitrix_schedule_date,
- :feedback_status,
- :rejection_reason,
- :rejection_reason_detail,
- :feedback_url,
- :is_new_patient,
- :id_number,
- :address,
- :payment_method,
- :occupation,
- :religion,
- :fit_to_fly_letter,
- :blood_type,
- :legal_guardian_name,
- :price,
- :confirmation_pdf_url,
- :update_by,
- :doctor_id,
- :hospital_id,
- :schedule_id,
- :form_2_rs_api_status,
- :is_dashboard,
- :update_booking_rs_api_status,
- booking_status: [:name, :timestamp, :duration],
- booking_recommendation: [:doctor_id,:doctor_name,:schedule_date,:schedule_time])
- end
- def reservation_form_params
- params.require(:reservation).permit(:user_id,
- :key,
- :doctor_id,
- :hospital_id,
- :procedure_id,
- :funnel_name,
- :doctor_name,
- :hospital_name,
- :reservation_date,
- :reservation_time,
- :price,
- :follow,
- :user_name,
- :user_phone,
- :user_email,
- :user_birthday,
- :source,
- :schedule_id,
- :gender,
- :is_new_patient,
- :id_number,
- :address,
- :payment_method,
- :occupation,
- :religion,
- :fit_to_fly_letter,
- :blood_type,
- :legal_guardian_name,
- :is_dashboard,
- :booking_id,
- :patient_name,
- :insurance_id,
- :insurance_name,
- :form_2_rs_api_status,
- :update_booking_rs_api_status)
- end
- def doctor_form_params
- doctor_params = {}
- doctor_params["id"]=reservation_form_params["doctor_id"]
- doctor_params["code"]= reservation_form_params["doctor_id"]
- doctor_params["name"]= reservation_form_params["doctor_name"]
- Reservation::DoctorForm.new(doctor_params)
- end
- def doctor_reservation_update_status
- update_status_params = {}
- update_status_params["booking_id"]=reservation_form_params["booking_id"]
- update_status_params["bitrix_status"]= reservation_form_params["bitrix_status"]
- Reservation::DoctorForm.new(update_status_params)
- end
- def schedule_form_params
- day_name = Date.parse(reservation_form_params["reservation_date"]).strftime("%A") rescue ""
- start= reservation_form_params["reservation_time"].split('-')[0] rescue ""
- finish= reservation_form_params["reservation_time"].split('-')[1] rescue ""
- schedule_params = {}
- schedule_params["id"]=reservation_form_params["schedule_id"]
- schedule_params["schedule_day"]=day_name
- schedule_params["time_from"]=start
- schedule_params["time_to"]=finish
- schedule_params["code"]=reservation_form_params["schedule_id"]
- schedule_params["doctor_id"]=reservation_form_params["doctor_id"]
- Reservation::ScheduleForm.new(schedule_params)
- end
- def my_reservation_form_params(reservation_params)
- Reservation::DoctorReservationForm.new(reservation_params)
- end
- def my_reservation_form_log_params(reservation_params)
- Reservation::DoctorReservationFormLog.new(reservation_params)
- end
- def my_reservation_form_params_v200(reservation_params)
- Reservation::DoctorReservationFormV200.new(reservation_params)
- end
- def my_reservation_form_params_v210(reservation_params)
- Reservation::DoctorReservationFormV210.new(reservation_params)
- end
- def my_reservation_form_log_params_v200(reservation_params)
- Reservation::DoctorReservationFormLogV200.new(reservation_params)
- end
- def my_reservation_form_log_params_v210(reservation_params)
- Reservation::DoctorReservationFormLogV210.new(reservation_params)
- end
- def my_update_lead_form_params(my_lead_params)
- Reservation::DoctorReservationLeadForm.new(my_lead_params)
- end
- def lead_reservation_form_params
- my_lead_form = lead_form_params
- my_lead_form = doctor_reservation_service.lead_parameter_update(my_lead_form)
- Reservation::DoctorReservationLeadForm.new(my_lead_form)
- end
- def status_update_form_params(lead_params)
- Reservation::DoctorReservationLeadForm.new(lead_params)
- end
- def check_is_dashboard(hospital_id)
- hospital = Hospital.find_by(code: hospital_id, data_status: Enum::DataStatus.statuses["active_data_status"])
- Rails.logger.info hospital_id
- Rails.logger.info hospital
- if hospital.present?
- Rails.logger.info "hospital available and active"
- return true
- end
- Rails.logger.info "hospital not available or not active"
- return false
- end
- def add_dashboard_flag_and_status(reservation_params)
- # Rails.logger.info "===============parameter di dashboard flag============"
- # Rails.logger.info JSON.pretty_generate(reservation_params)
- rs_api_params = reservation_params
- begin
- rs_api_params["is_dashboard"]=false;
- rs_api_params["bitrix_status"]= new_status
- hospital_id = reservation_params["hospital_id"]
- hospital = Hospital.find_by(code: hospital_id)
- if hospital.try(:data_status)==Enum::DataStatus.statuses["active_data_status"]
- rs_api_params["is_dashboard"]=true;
- end
- rescue => e
- Rails.logger.info e.inspect
- Rails.logger.info e.backtrace
- end
- return rs_api_params
- end
- def speciality_params
- speciality_params={}
- speciality_params["doctor_id"] = reservation_form_params["doctor_id"]
- # Rails.logger.info "===============parameter di speciality doctor============"
- # Rails.logger.info JSON.pretty_generate(speciality_params)
- return speciality_params
- end
- def get_booking_id(response)
- # Rails.logger.info "=============================inilah response dari rs api (form 1):"
- # Rails.logger.info response.inspect
- if response.code==200
- body = JSON.parse(response.body)
- return body["booking_id"]
- else
- return "";
- end
- end
- def get_response_message(response)
- puts "=============================inilah response dari rs api:"
- puts response.inspect
- if response.try(:body)
- body = JSON.parse(response.body)
- puts "=============inilah bodynya:============"
- puts JSON.pretty_generate(body)
- puts JSON.pretty_generate(body["message"])
- return body["message"] rescue ""
- else
- return data_not_processed
- end
- end
- def get_approval_status_user
- end
- def get_cancelled_user
- end
- def get_approval_status_date
- end
- def get_cancelled_date
- end
- def get_doctor_speciality(response)
- # Rails.logger.info "=============================inilah response dari rs api (doctor speciality):"
- # Rails.logger.info response.inspect
- if response.code==200
- begin
- body = JSON.parse(response.body)
- return body["data"]["doctor"]["doctor_speciality"]
- rescue
- return ""
- end
- else
- return ""
- end
- end
- def rs_api_form_2
- rs_api_param={}
- rs_api_param["reservation"] = reservation_form_params
- return rs_api_param
- end
- def rs_api_form_1_v210
- rs_api_param={}
- rs_api_param["reservation"] = reservation_form_params
- return rs_api_param
- end
- def rs_api_update_status
- rs_api_param={}
- rs_api_param["booking_id"]= lead_form_params["booking_id"]
- rs_api_param["reservation"] = lead_form_params
- return rs_api_param
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement