public IActionResult Delete(int id)
        {
            PolicyHolder ph = _policyHolderContext.PolicyHolders.First(p => p.Id == id);

            _policyHolderContext.PolicyHolders.Remove(ph);
            _policyHolderContext.SaveChanges();
            return(RedirectToAction(nameof(Index)));
        }
Exemple #2
0
        // GET: PTransactions/Details/5
        public async Task <IActionResult> Process(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Subtransaction subtransaction = await _transactionContext.Subtransactions.FirstAsync(s => s.Id == id);

            PTransaction transaction = await _transactionContext.PTransactions.FirstAsync(m => m.Id == subtransaction.PTransactionId);

            PolicyHolder policyHolder = await _policyHolderContext.PolicyHolders.FirstAsync(p => p.Id == transaction.HolderId);

            Policy policy = await _policyContext.Policies.FirstAsync(p => p.Id == policyHolder.Id);

            Drug drug = await _drugContext.Drugs.FirstAsync(d => d.Id == subtransaction.DrugId);

            IQueryable <PolicyDrug> coveredDrugs = _policyDrugContext.PolicyDrugs.Where(pd => pd.PolicyId == policy.Id);

            PolicyDrug pd = coveredDrugs.FirstOrDefault(cd => cd.DrugId == drug.Id);

            bool inDate   = policyHolder.StartDate < DateTime.Now && DateTime.Now < policyHolder.EndDate;
            bool inPolicy = pd != null;

            if (!inDate)
            {
                subtransaction.Accepted = -2;
            }
            else if (!inPolicy)
            {
                subtransaction.Accepted = -1;
            }
            else
            {
                subtransaction.Accepted = 1;
            }

            transaction.Processed = isTransactionProcessed(transaction, subtransaction);

            if (subtransaction.Accepted == 1)
            {
                subtransaction.AmountPaid    = getTotalCost(drug, policy, policyHolder, subtransaction);
                policyHolder.AmountPaid     += subtransaction.AmountPaid;
                policyHolder.AmountRemaining = policy.MaxCoverage - policyHolder.AmountPaid;

                _policyHolderContext.PolicyHolders.Update(policyHolder);
                _policyHolderContext.SaveChanges();
            }
            _transactionContext.PTransactions.Update(transaction);
            _transactionContext.Subtransactions.Update(subtransaction);
            _transactionContext.SaveChanges();

            // Send response to pharmacy
            SendResponse(subtransaction);

            string holderName = "";

            if (policyHolder.Name == HttpContext.Session.GetString(HomeController.HolderName))
            {
                holderName = policyHolder.Name;
            }

            bool includeProcessed = false;

            if (!string.IsNullOrEmpty(HttpContext.Session.GetString(HomeController.IncludeProcessed)))
            {
                includeProcessed = bool.Parse(HttpContext.Session.GetString(HomeController.IncludeProcessed));
            }

            return(RedirectToAction("Details", new { id = transaction.Id }));
        }