// GET: Admin/Medical/UpdateAllowance
        public ActionResult UpdateAllowance(string id = "")
        {
            try
            {
                int _id;
                MedicalAllowanceInfo _medicalAllowance = null;

                if (!int.TryParse(id, out _id))
                {
                    return(RedirectToAction("Allowance", "Medical"));
                }

                using (MedicalAllowanceRepository Repo = new MedicalAllowanceRepository())
                {
                    _medicalAllowance = Repo.GetMedicalAllowanceById(_id);
                }

                if (_medicalAllowance == null)
                {
                    return(RedirectToAction("Allowance", "Medical"));
                }

                return(View(_medicalAllowance));
            }

            catch (Exception ex)
            {
                return(View("Error", new HandleErrorInfo(ex, "Medical", "UpdateAllowance")));
            }
        }
        public ActionResult UpdateAllowance(MedicalAllowanceInfo medicalAllowanceInfo)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(View());
                }

                using (MedicalAllowanceRepository Repo = new MedicalAllowanceRepository())
                {
                    medicalAllowanceInfo.Category = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(medicalAllowanceInfo.Category.ToLower());

                    Repo.UpdateMedicalAllowance(medicalAllowanceInfo);

                    TempData["Msg"] = AlertMessageProvider.SuccessMessage("Allowance updated successfully.");

                    return(RedirectToAction("Allowance", "Medical"));
                }
            }

            catch (Exception ex)
            {
                return(View("Error", new HandleErrorInfo(ex, "Medical", "UpdateAllowance")));
            }
        }
        public void SaveMedicalAllowance(MedicalAllowanceInfo medicalAllowanceInfo)
        {
            Data.MedicalAllowance medicalAllowance = ConvertToDb(medicalAllowanceInfo);

            _context.MedicalAllowances.Add(medicalAllowance);
            _context.SaveChanges();
        }
 public Data.MedicalAllowance ConvertToDb(MedicalAllowanceInfo medicalAllowanceInfo)
 {
     return(new Data.MedicalAllowance
     {
         Id = medicalAllowanceInfo.Id,
         Category = medicalAllowanceInfo.Category,
         Amount = medicalAllowanceInfo.Amount
     });
 }
        public void UpdateMedicalAllowance(MedicalAllowanceInfo medicalAllowanceInfo)
        {
            Data.MedicalAllowance medicalAllowance = _context.MedicalAllowances.Find(medicalAllowanceInfo.Id);

            if (medicalAllowance != null)
            {
                medicalAllowance.Category = medicalAllowanceInfo.Category;
                medicalAllowance.Amount   = medicalAllowanceInfo.Amount;

                _context.SaveChanges();
            }
            else
            {
                throw new ArgumentNullException();
            }
        }
        public ActionResult ProcessRequest(string CheckoutId = "", string ProcessBtn = "")
        {
            try
            {
                int _id;
                MedicalCheckoutInfo  _checkout         = null;
                EmployeeInfo         _employeeInfo     = null;
                MedicalAllowanceInfo _medicalAllowance = null;

                if (!int.TryParse(CheckoutId, out _id))
                {
                    TempData["Msg"] = AlertMessageProvider.FailureMessage("Something went wrong, please try again later.");

                    return(RedirectToAction("Requests", "Medical"));
                }

                using (MedicalCheckoutRepository CheckoutRepo = new MedicalCheckoutRepository())
                {
                    _checkout = CheckoutRepo.GetMedicalCheckoutById(_id);

                    if (_checkout == null)
                    {
                        TempData["Msg"] = AlertMessageProvider.FailureMessage("Checkout not found.");

                        return(RedirectToAction("Requests", "Medical"));
                    }

                    if (ProcessBtn != "Approve" && ProcessBtn != "Reject")
                    {
                        TempData["Msg"] = AlertMessageProvider.FailureMessage("Something went wrong, please try again later.");

                        return(RedirectToAction("RequestDetails", "Medical", new { id = _checkout.Id }));
                    }

                    if (ProcessBtn == "Approve")
                    {
                        using (EmployeeRepository EmployeeRepo = new EmployeeRepository())
                        {
                            _employeeInfo = EmployeeRepo.GetEmployeeInfoById(_checkout.EmployeeInfoId);
                        }

                        using (MedicalAllowanceRepository AllowanceRepo = new MedicalAllowanceRepository())
                        {
                            if (_employeeInfo.MaritalStatus == "Single")
                            {
                                _medicalAllowance = AllowanceRepo.GetMedicalAllowanceByCategory("Single");
                            }
                            else
                            {
                                _medicalAllowance = AllowanceRepo.GetMedicalAllowanceByCategory("Married");
                            }
                        }

                        var _availedMedical = CheckoutRepo.GetAvailedMedicalCheckoutsListByEmployeeIdYearwise(_checkout.EmployeeInfoId, DateTime.Now.ToString("yyyy"));

                        var remainingMedicalAmount = _medicalAllowance.Amount - _availedMedical.Sum(x => x.Amount);

                        if (_checkout.Amount > remainingMedicalAmount)
                        {
                            TempData["Msg"] = AlertMessageProvider.FailureMessage("This request cannot be process, employee has insufficient medical amount.");

                            return(RedirectToAction("RequestDetails", "Medical", new { id = _checkout.EmployeeInfoId }));
                        }

                        _checkout.Status = "Approved";

                        TempData["Msg"] = AlertMessageProvider.SuccessMessage("Medical request approved successfully.");
                    }
                    else
                    {
                        _checkout.Status = "Incomplete";

                        TempData["Msg"] = AlertMessageProvider.SuccessMessage("Medical request rejected successfully.");
                    }

                    CheckoutRepo.UpdateMedicalCheckout(_checkout);
                }

                return(RedirectToAction("RequestDetails", "Medical", new { id = _checkout.EmployeeInfoId }));
            }

            catch (Exception ex)
            {
                return(View("Error", new HandleErrorInfo(ex, "Medical", "ProcessRequest")));
            }
        }
Exemple #7
0
        public ActionResult SaveCheckout(MedicalCheckoutInfo medicalCheckoutInfo)
        {
            try
            {
                int                  _medicalCheckoutId = 0;
                EmployeeInfo         _employeeInfo      = null;
                MedicalAllowanceInfo _medicalAllowance  = null;

                if (!ModelState.IsValid)
                {
                    TempData["Msg"] = AlertMessageProvider.FailureMessage("Invalid data.");

                    return(RedirectToAction("Details", "Medical"));
                }

                if (medicalCheckoutInfo.TreatmentDate > DateTime.Now.Date)
                {
                    TempData["Msg"] = AlertMessageProvider.FailureMessage("Treatment date cannot be earlier than today.");

                    return(RedirectToAction("Details", "Medical"));
                }

                using (FamilyMemberRepository Repo = new FamilyMemberRepository())
                {
                    FamilyMemberInfo _familyMember = null;

                    _familyMember = Repo.GetFamilyMemberById(medicalCheckoutInfo.FamilyMemberId);

                    if (_familyMember == null || _familyMember.EmployeeInfoId != CurrentUser.EmployeeInfoId)
                    {
                        TempData["Msg"] = AlertMessageProvider.FailureMessage("Invalid patient name.");

                        return(RedirectToAction("Details", "Medical"));
                    }
                }

                using (EmployeeRepository Repo = new EmployeeRepository())
                {
                    _employeeInfo = Repo.GetEmployeeInfoById(CurrentUser.EmployeeInfoId);
                }

                using (MedicalAllowanceRepository Repo = new MedicalAllowanceRepository())
                {
                    if (_employeeInfo.MaritalStatus == "Single")
                    {
                        _medicalAllowance = Repo.GetMedicalAllowanceByCategory("Single");
                    }
                    else
                    {
                        _medicalAllowance = Repo.GetMedicalAllowanceByCategory("Married");
                    }
                }

                using (MedicalCheckoutRepository Repo = new MedicalCheckoutRepository())
                {
                    var _availedMedical = Repo.GetAvailedMedicalCheckoutsListByEmployeeIdYearwise(CurrentUser.EmployeeInfoId, DateTime.Now.ToString("yyyy"));

                    var remainingMedicalAmount = _medicalAllowance.Amount - _availedMedical.Sum(x => x.Amount);

                    if (medicalCheckoutInfo.Amount > remainingMedicalAmount)
                    {
                        TempData["Msg"] = AlertMessageProvider.FailureMessage("Selected amount cannot be greater than remaining medical amount.");

                        return(RedirectToAction("Details", "Medical"));
                    }

                    medicalCheckoutInfo.EmployeeInfoId = CurrentUser.EmployeeInfoId;
                    medicalCheckoutInfo.Status         = "Incomplete";

                    _medicalCheckoutId = Repo.SaveMedicalCheckout(medicalCheckoutInfo);
                }

                return(RedirectToAction("Apply", "Medical", new { id = _medicalCheckoutId }));
            }

            catch (Exception ex)
            {
                return(View("Error", new HandleErrorInfo(ex, "Medical", "SaveCheckout")));
            }
        }