예제 #1
0
        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));
        }
예제 #2
0
        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));
        }