public IActionResult BuySomeItems(BuySomeItemsViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var items = model.Items.Select(item => (item.ItemId, item.Amount)); var result = _prescriptionRepo.BuySome(model.PrescriptionId, items); var emailResult = _prescriptionRepo.Get(model.PrescriptionId); if (!result.IsSuccess) { return(RedirectToPrescriptionDetails(model.PrescriptionId, result.FailureMessage)); } if (!emailResult.IsSuccess) { return(RedirectToPrescriptionDetails(model.PrescriptionId, result.FailureMessage)); } var emailMsg = result.Value; var email = emailResult.Value.Email; var subject = emailMsg.Contains("część") ? $"$Kupiono część leków z recepty {model.PrescriptionId}" : $"Recepta {model.PrescriptionId} zrealizowana"; _emailSenderService.SendEmail(email, subject, emailMsg); return(RedirectToPrescriptionDetails(model.PrescriptionId)); }
public IActionResult BuySomeItems(int id) { var prescriptionResult = _prescriptionRepo.Get(id); var drugsStoreResult = _drugStoreStockRepo.Get(); if (!prescriptionResult.IsSuccess) { return(RedirectToPrescriptionDetails(id, prescriptionResult.FailureMessage)); } if (!drugsStoreResult.IsSuccess) { return(RedirectToPrescriptionDetails(id, drugsStoreResult.FailureMessage)); } var prescription = Mapper.Map <PrescriptionViewModel>(prescriptionResult.Value); var items = from pItem in prescription.PrescriptionItems where !pItem.BoughtOut join available in drugsStoreResult.Value on pItem.MedicineId equals available.MedicineId select new BuySingleItemViewModel { Available = available.Quantity, Amount = 0, ItemId = pItem.Id, MedicineName = $"{pItem.Medicine.Name} - {pItem.Medicine.MedicineContent}", RemainingAmount = pItem.RemainingToBought, UnitPrice = pItem.Medicine.UnitPrice }; if (items.Count() == 0) { return(RedirectToPrescriptionDetails(prescription.Id, "Apteka nie ma na stanie żadnych leków, które znajdują się na recepcie")); } var model = new BuySomeItemsViewModel { PrescriptionId = id, Items = items.ToList() }; return(View(model)); }