public ActionResult Edit(int? id, int? patientId, int? y, int? m, int? d) { ReceiptViewModel viewModel; if (id != null) viewModel = GetViewModel( (from r in this.db.Receipts where r.Id == id select r).First(), this.GetToLocalDateTimeConverter()); else viewModel = new ReceiptViewModel() { Id = null, PatientId = patientId, IssuanceDate = DateTimeHelper.CreateDate(y, m, d) ?? this.GetPracticeLocalNow(), }; return this.View("Edit", viewModel); }
public ActionResult Edit(ReceiptViewModel[] receipts) { var formModel = receipts.Single(); Receipt receipt; if (formModel.PrescriptionMedicines == null) this.ModelState.AddModelError("Medicines", "A receita deve ter pelo menos um medicamento"); // we cannot trust that the autocomplete has removed incorrect // value from the client. for (var i = 0; i < formModel.PrescriptionMedicines.Count; i++) { var medication = formModel.PrescriptionMedicines[i]; if (medication.MedicineId != null) continue; // it's necessary to remove this value from the ModelState to // prevent it from "reappearing" // http://stackoverflow.com/questions/9163445/my-html-editors-are-ignoring-any-value-i-set-and-are-always-taking-their-values this.ModelState.Remove(string.Format("ReceiptMedicines[{0}].MedicineId", i)); medication.MedicineText = string.Empty; } if (formModel.Id == null) { Debug.Assert(formModel.PatientId != null, "formModel.PatientId != null"); receipt = new Receipt() { CreatedOn = this.GetUtcNow(), PatientId = formModel.PatientId.Value, PracticeId = this.DbUser.PracticeId, }; this.db.Receipts.AddObject(receipt); } else receipt = this.db.Receipts.FirstOrDefault(r => r.Id == formModel.Id); if (formModel.PrescriptionMedicines.Count == 0) { this.ModelState.AddModelError( () => formModel.PrescriptionMedicines, "Não é possível criar uma receita sem medicamentos."); } if (this.ModelState.IsValid) { // Updating receipt medicines. This is only possible when view-model is valid, // otherwise this is going to throw exceptions. Debug.Assert(receipt != null, "receipt != null"); receipt.ReceiptMedicines.Update( formModel.PrescriptionMedicines, (vm, m) => vm.Id == m.Id, (vm, m) => { m.PracticeId = this.DbPractice.Id; m.MedicineId = vm.MedicineId.Value; m.Quantity = vm.Quantity; m.Observations = vm.Observations; m.Prescription = vm.Prescription; }, m => this.db.ReceiptMedicines.DeleteObject(m) ); receipt.Patient.IsBackedUp = false; receipt.IssuanceDate = this.ConvertToUtcDateTime(formModel.IssuanceDate.Value); this.db.SaveChanges(); return this.View("Details", GetViewModel(receipt, this.GetToLocalDateTimeConverter())); } return this.View("Edit", formModel); }
public ActionResult Create(ReceiptViewModel[] receipts) { return this.Edit(receipts); }