public HttpResponseMessage ValidateAndSubmitPreexaminationData(Preexamination parameter) { var transaction = new TransactionalInformation(); var response = new PreexaminationDataService().ValidateAndSubmitPreexaminationData(parameter, connectionString, SessionToken, out transaction); if (transaction.ReturnStatus) { return(Request.CreateResponse(HttpStatusCode.OK, response)); } return(Request.CreateResponse(HttpStatusCode.InternalServerError, transaction)); }
public object ValidateAndSubmitPreexaminationData(Preexamination preexaminationData, string connectionString, string sessionTicket, out TransactionalInformation transaction) { var method = MethodInfo.GetCurrentMethod(); var ipInfo = Util.GetIPInfo(HttpContext.Current.Request); transaction = new TransactionalInformation(); var securityTicket = VerifySessionToken(sessionTicket); var data = cls_Get_Account_Information_with_PracticeID.Invoke(connectionString, securityTicket).Result; try { List <object> reasons = new List <object>(); if (preexaminationData.shouldSubmit && !preexaminationData.isResubmit) { var passwordTransaction = new TransactionalInformation(); var password_verified = new MainDataService().VerifyDoctorPassword(connectionString, preexaminationData.password, preexaminationData.doctor_id, sessionTicket, out passwordTransaction); if (!password_verified) { reasons.Add(new { label = "LABEL_CREDENTIALS_NOT_VERIFIED" }); return(new { canSubmit = false, reasons = reasons }); } } var preexaminationDate = DateTime.Parse(preexaminationData.date, culture, System.Globalization.DateTimeStyles.AssumeLocal); if (preexaminationDate.Date > DateTime.Now.Date) { reasons.Add(new { label = "LABEL_PREEXAMINATION_DATE_CANNOT_BE_IN_THE_FUTURE" }); return(new { canSubmit = false, reasons = reasons }); } var contracts = cls_Get_InsuranceToBrokerContractIDs_for_Contracts_with_Preexamination.Invoke(connectionString, securityTicket).Result; reasons.AddRange(DoctorHasConsent(contracts, preexaminationData.doctor_id, preexaminationDate, connectionString, securityTicket)); reasons.AddRange(PatientHasConsent(contracts, preexaminationData.patient_id, preexaminationDate, connectionString, securityTicket)); if (!preexaminationData.isResubmit) { reasons.AddRange(PatientExceededPreexaminationLimit(contracts, preexaminationData.patient_id, preexaminationDate, preexaminationData.is_left_eye ? "L" : "R", connectionString, securityTicket)); } if (reasons.Any()) { return new { canSubmit = !reasons.Any(), reasons = reasons } } ; var downloadUrl = ""; if (preexaminationData.shouldSubmit) { downloadUrl = cls_Submit_Preexamination.Invoke(connectionString, new P_CAS_SPE_1805() { date = preexaminationDate, doctor_id = preexaminationData.doctor_id, patient_id = preexaminationData.patient_id, localization = preexaminationData.is_left_eye ? "L" : "R", case_id = preexaminationData.case_id, isResubmit = preexaminationData.isResubmit }, securityTicket).Result.ReportUrl; } return(new { canSubmit = true, downloadUrl = downloadUrl }); } catch (Exception ex) { Logger.LogDocAppInfo(new LogEntry(ipInfo.address, ipInfo.agent, connectionString, method, securityTicket, ex), data.PracticeName); transaction.ReturnMessage = new List <string>(); string errorMessage = ex.Message; transaction.ReturnStatus = false; transaction.ReturnMessage.Add(errorMessage); transaction.IsAuthenicated = true; transaction.IsException = true; } return(null); }