public ActionResult UpdateServiceTreatment(ServiceTreatmentModel model) { if (ModelState.IsValid) { updateServiceTreatment(model); return(RedirectToAction("AppointmentList")); } return(View("ServiceTreatment", model)); }
private void updateServiceTreatment(ServiceTreatmentModel model) { if (model.StatementId == 0) // CREATE NEW STATEMENT { var newStatement = Db.ServiceStatements.Add(new ServiceStatement { Date = DateTime.Now, Prescription = model.Prescription, Amount = 0, AppointmentId = model.AppointmentId, DoctorId = model.DoctorId, PatientId = model.PatientId, }); //update service with fee var serviceFees = Db.ServiceFees.Select(x => new { x.ServiceId, x.Fee }); List <int> serviceIds = new List <int>(); if (model.BloodTest) { serviceIds.Add(1); } if (model.Xray) { serviceIds.Add(2); } if (model.MRI) { serviceIds.Add(3); } if (model.Radiology) { serviceIds.Add(4); } if (model.LabTest) { serviceIds.Add(5); } // create a list for AddRange List <ServiceStatementDetail> serviceDetails = new List <ServiceStatementDetail>(); // Add appointment fee as default var appointmentFee = serviceFees.FirstOrDefault(s => s.ServiceId == 6); newStatement.Amount += (appointmentFee != null) ? appointmentFee.Fee : 0; serviceDetails.Add(new ServiceStatementDetail { StatementId = newStatement.Id, ServiceId = 6 }); // Add optional services + fee foreach (var serviceId in serviceIds) { var fee = serviceFees.FirstOrDefault(s => s.ServiceId == serviceId); newStatement.Amount += (fee != null) ? fee.Fee : 0; serviceDetails.Add(new ServiceStatementDetail { StatementId = newStatement.Id, ServiceId = serviceId }); } Db.ServiceStatementDetails.AddRange(serviceDetails); } else // UPDATE OLD STATEMENT { var oldStatement = Db.ServiceStatements.Where(s => s.Id == model.StatementId).FirstOrDefault(); if (oldStatement != null) { oldStatement.Prescription = model.Prescription; oldStatement.Date = DateTime.Now; oldStatement.Amount = 0; // remove old statement details var details = Db.ServiceStatementDetails.Where(detail => detail.StatementId == model.StatementId); Db.ServiceStatementDetails.RemoveRange(details); //update new services with fee var serviceFees = Db.ServiceFees.Select(x => new { x.ServiceId, x.Fee }); List <int> serviceIds = new List <int>(); if (model.BloodTest) { serviceIds.Add(1); } if (model.Xray) { serviceIds.Add(2); } if (model.MRI) { serviceIds.Add(3); } if (model.Radiology) { serviceIds.Add(4); } if (model.LabTest) { serviceIds.Add(5); } // create a list for AddRange List <ServiceStatementDetail> serviceDetails = new List <ServiceStatementDetail>(); // add appointment fee var appointmentFee = serviceFees.FirstOrDefault(s => s.ServiceId == 6); oldStatement.Amount += (appointmentFee != null) ? appointmentFee.Fee : 0; serviceDetails.Add(new ServiceStatementDetail { StatementId = oldStatement.Id, ServiceId = 6 }); // add optional services + fee foreach (var serviceId in serviceIds) { var fee = serviceFees.FirstOrDefault(s => s.ServiceId == serviceId); oldStatement.Amount += (fee != null) ? fee.Fee : 0; serviceDetails.Add(new ServiceStatementDetail { StatementId = oldStatement.Id, ServiceId = serviceId }); } // then update with new details Db.ServiceStatementDetails.AddRange(serviceDetails); } } Db.SaveChanges(); }
public ActionResult UpdateServiceTreatment(int appointmentId) { if (!isAuthorizedAccess(EmployeeRole.Doctor)) { ViewBag.ErrorMessage = ACCESS_DENIED_MSG; return(View("~/Views/Shared/Error.cshtml")); } var statement = Db.ServiceStatements.Where(s => s.AppointmentId == appointmentId).FirstOrDefault(); var appointment = Db.Appointments.Find(appointmentId); // New Statement if (statement == null && appointment != null) { return(View("ServiceTreatment", new ServiceTreatmentModel() { PatientId = appointment.PatientId, DoctorId = appointment.DoctorId, AppointmentId = appointmentId })); } // Update else if (statement.Status == false && appointment != null) { var serviceList = Db.ServiceStatementDetails.Where(s => s.StatementId == statement.Id).ToList(); var model = new ServiceTreatmentModel(); model.StatementId = statement.Id; model.Prescription = statement.Prescription; model.AppointmentId = appointmentId; model.Status = statement.Status; // load checkboxes values foreach (var service in serviceList) { switch (service.ServiceId) { case 1: model.BloodTest = true; break; case 2: model.Xray = true; break; case 3: model.MRI = true; break; case 4: model.Radiology = true; break; case 5: model.LabTest = true; break; default: break; } } return(View("ServiceTreatment", model)); } ViewBag.ErrorMessage = "Appointment not found"; return(View("~/Views/Shared/Error.cshtml")); }