public ActionResult CreateUpdatePermanentEmployeeSalary(PermanentEmployeeSalaryModel empModel)
        {
            if (!ModelState.IsValid)
            {
                return(ShowErrorMessage(GetModelErrors(ModelState)));
            }

            var empSalary = new PermanentEmployeeSalary();

            if (empModel.Id > 0)
            {
                empSalary = FarmManagementEntities.PermanentEmployeeSalaries.Single(x => x.Id == empModel.Id);
            }

            empSalary.Year             = empModel.Year;
            empSalary.Month            = empModel.Month;
            empSalary.Date             = empModel.Date;
            empSalary.UserId           = empModel.EmployeeId;
            empSalary.BasicSalary      = empModel.BasicSalary;
            empSalary.MedicalAllowance = Convert.ToDecimal(empModel.MedicalAllowance);
            empSalary.TA_DA            = Convert.ToDecimal(empModel.TA_DA);
            empSalary.HouseRent        = Convert.ToDecimal(empModel.HouseRent);
            empSalary.UtilityAllowance = Convert.ToDecimal(empModel.UtilityAllowance);
            empSalary.ProvidentFund    = Convert.ToDecimal(empModel.ProvidentFund);
            empSalary.Bonus            = Convert.ToDecimal(empModel.Bonus);
            empSalary.Penality         = empModel.Penality;
            empSalary.IsAllowFund      = empModel.IsAllowFund;

            if (empModel.Id == 0)
            {
                empSalary.InsertDate = DateTime.Now;
                FarmManagementEntities.PermanentEmployeeSalaries.Add(empSalary);
            }
            else
            {
                empSalary.UpdateDate = DateTime.Now;
            }

            var user = FarmManagementEntities.Users.FirstOrDefault(u => u.Id == empModel.EmployeeId);

            if (user != null)
            {
                user.Salary = empModel.BasicSalary.ToString();
            }

            FarmManagementEntities.SaveChanges();

            var message = string.Format(Constant.SuccessMessage, empModel.Id > 0 ? "updated" : "added");

            return(ShowSuccessMessage(message));
        }
        public ActionResult CreateUpdatePermanentEmployeeSalary(Int32 id)
        {
            var empSalaryModel = new PermanentEmployeeSalaryModel();

            if (id > 0)
            {
                var empSalary = FarmManagementEntities.PermanentEmployeeSalaries.Single(x => x.Id == id);
                empSalaryModel = empSalary.ToType <PermanentEmployeeSalary, PermanentEmployeeSalaryModel>();

                var basicSalaryFromEmployeeTable = FarmManagementEntities.Users.Where(u => u.Id == empSalary.UserId).Select(u => u.Salary).FirstOrDefault();
                if (basicSalaryFromEmployeeTable != null)
                {
                    decimal numericSalary;

                    if (Decimal.TryParse(basicSalaryFromEmployeeTable, out numericSalary))
                    {
                        empSalaryModel.BasicSalary = numericSalary;
                    }
                }

                var loanReceived =
                    FarmManagementEntities.LoanManagements.Where(lm => lm.UserId == empSalary.UserId)
                    .Sum(lm => lm.LoanAmount);

                empSalaryModel.LoanReceived = loanReceived;

                var loanReturned =
                    FarmManagementEntities.ReturnLoans.Where(lm => lm.UserId == empSalary.UserId)
                    .Sum(lm => lm.InstallmentAmount);

                empSalaryModel.LoanReturned = loanReturned;

                empSalaryModel.LoanRemaining = loanReceived - loanReturned;

                empSalaryModel.EmployeeId = empSalary.UserId;
            }

            return(PartialView("PermanentEmployeeSalaryPartial", empSalaryModel));
        }