Exemplo n.º 1
0
        public ActionResult Save(SalaryUpdateViewModel viewModel)
        {
            RepopulateVm(viewModel);

            if (viewModel.RunningTotal != viewModel.ReturnedSalary.NewTotalSalary)
            {
                ModelState.AddModelError("ValidationSummary", "The Total Salary entered does not match the running total!");
                viewModel.ReadOnly = false;
            }

            if (ModelState.IsValid)
            {
                if (PassedEdits(viewModel))
                {
                    if (!Security.CanUpdateRight(viewModel.Employer.EmployerId, User.Identity.Name))
                    {
                        ModelState.AddModelError("ValidationSummary", "You do not have sufficient rights to update restricted employees!");
                        viewModel.TabIndex = (int)ViewElement.Employer;
                    }
                    else
                    {
                        SaveOrAddRecord(viewModel);
                        ModelState.Clear();
                        viewModel = new SalaryUpdateViewModel // a new model that only has fields we want to keep
                        {
                            StatusPass     = viewModel.StatusPass,
                            Status         = viewModel.Status,
                            LastSuccess    = viewModel.LastSuccess,
                            Employer       = viewModel.Employer,
                            AllowSearch    = viewModel.AllowSearch,
                            AllowUpdate    = viewModel.AllowUpdate,
                            AllowCsvButton = viewModel.AllowCsvButton,
                            TabIndex       = (int)ViewElement.Employee
                        };

                        // we want to clear all fields but employer's EmployerId / LastSuccess and make the page readonly
                    }
                }
                else
                {
                    viewModel.Status     = "Zero records added";
                    viewModel.StatusPass = false;
                }
            }
            else
            {
                viewModel.Status     = "Zero records added";
                viewModel.StatusPass = false;

                if (!viewModel.ReadOnly)
                {
                    viewModel.TabIndex = (int)ViewElement.Hours;
                }
            }

            return(View("Index", viewModel));
        }
Exemplo n.º 2
0
        public ActionResult Search(SalaryUpdateViewModel viewModel)
        {
            viewModel.AllowCsvButton = Security.CanExport(User.Identity.Name);

            var employeeSuccess = GetEmployee(viewModel);

            if (!employeeSuccess)
            {
                ModelState.AddModelError("Employee.EmployeeId", "No employee record found! Make sure you entered the Employee number correctly.");
                viewModel.ReadOnly = true;

                return(View("Index", viewModel));
            }

            var employerSuccess = GetEmployer(viewModel);

            if (!employerSuccess)
            {
                ModelState.AddModelError("EmployerId.EmployerId", "No employer record found! Make sure you entered the EmployerId number correctly.");
                viewModel.ReadOnly = true;
            }
            else
            {
                if (viewModel.Employee.EmployerId != viewModel.Employer.EmployerId) // check if employee still works at employer
                {
                    ModelState.AddModelError("Employee.EmployeeId", "Employee does not work at " + viewModel.Employer.Name + ".");
                    viewModel.ReadOnly = true;
                }
                else
                {
                    if (!Security.CanViewRight(viewModel.Employer.EmployerId, User.Identity.Name))
                    {
                        ModelState.AddModelError("Employee.EmployeeId", "The employee is restricted and you do not have sufficient rights to view.");
                        viewModel.AllowSearch = false;
                    }
                    else
                    {
                        viewModel.AllowSearch = true;
                        viewModel.TabIndex    = (int)ViewElement.Hours;
                    }

                    viewModel.ReadOnly = !Security.CanUpdateRight(viewModel.Employer.EmployerId, User.Identity.Name);

                    if (!Security.CanUpdateEmployee(viewModel.Employee.Status))
                    {
                        ModelState.AddModelError("Employee.EmployeeId", "Employee status forbids salary change!");
                        viewModel.ReadOnly = true;
                    }
                }
            }

            return(View("Index", viewModel));
        }
Exemplo n.º 3
0
        public static SalaryUpdateViewModel GetSalaryById(int id)
        {
            Entities entities           = new Entities();
            Incomes  salary             = entities.Incomes.Where(x => x.Id == id).FirstOrDefault();
            SalaryUpdateViewModel model = new SalaryUpdateViewModel
            {
                Id        = salary.Id,
                Income    = salary.Value,
                IncomeDay = salary.IncomeDay,
                Note      = salary.Note,
                Source    = salary.Name
            };

            return(model);
        }
Exemplo n.º 4
0
        public static int UpdateSalary(SalaryUpdateViewModel model)
        {
            Entities entities = new Entities();
            DateTime current  = DateTime.Now;

            Incomes salary = entities.Incomes.Where(x => x.Id == model.Id).FirstOrDefault();

            salary.Name      = model.Source;
            salary.IncomeDay = model.IncomeDay.Value;
            salary.Value     = model.Income.Value;
            salary.Note      = model.Note;

            entities.Incomes.Attach(salary);
            entities.Entry(salary).State = System.Data.Entity.EntityState.Modified;
            return(entities.SaveChanges());
        }
Exemplo n.º 5
0
        private bool PassedEdits(SalaryUpdateViewModel viewModel)
        {
            // Employee Status check
            if (!Security.EmployeeCodes.Contains("~" + viewModel.Employee.Status))
            {
                ModelState.AddModelError("ValidationSummary", "The employee is in a status where the salary cannot be changed!");
                viewModel.TabIndex = (int)ViewElement.Employee;
                viewModel.ReadOnly = true;
            }
            // Meal Allowance Provided must be 5% even if overriden unless multi employer
            var meals = (viewModel.ReturnedSalary.NewBasicCash * new decimal(0.05)).RoundToDollars();

            if (viewModel.ReturnedSalary.NewMealsProvided != meals && viewModel.ReturnedSalary.NewMealsProvided > 0)
            {
                if (!viewModel.MultiEmployer)
                {
                    ModelState.AddModelError("ValidationSummary", "The employer is not a multiple employer! The Meal Allowance Provided must be equal to 5% of the Cash Salary.");
                    viewModel.TabIndex = (int)ViewElement.MealAllowanceProvided;
                }
            }

            // Check for already existing record in EmployeeActions
            if (_data.HasSalaryAlready(viewModel.Employee.EmployeeId))
            {
                ModelState.AddModelError("ValidationSummary", "This person already has a salary keyed for " + ConfigurationManager.AppSettings.Get("EffectiveDate"));
                viewModel.TabIndex = (int)ViewElement.Employee;
            }

            // If after all that we don't have any errors, ayyyy
            if (ModelState.IsValid)
            {
                return(true);
            }

            // If the employee is restriced, see if user can update
            if (!ModelState.Values.SelectMany(modelState => modelState.Errors)
                .Any(error => error.ErrorMessage == "The employee is restricted and you do not have sufficient rights to view." &&
                     Security.CanUpdateRestricted(User.Identity.Name)))
            {
                return(false);
            }

            viewModel.TabIndex = (int)ViewElement.Employer;
            return(true);
        }
Exemplo n.º 6
0
        private bool GetEmployee(SalaryUpdateViewModel viewModel)
        {
            var matchingEmployee = new Employee();

            if (viewModel.Employee != null)
            {
                matchingEmployee = _data.GetEmployeeInfo(viewModel.Employee.EmployeeId);
            }

            if (matchingEmployee == null || matchingEmployee.EmployeeId == 0)
            {
                viewModel.Employee = null;
                return(false);
            }
            viewModel.Employee       = matchingEmployee;
            viewModel.ReturnedSalary = _data.GetReturnedSalary(viewModel.Employee.EmployeeId.ToString()) ?? new ReturnedSalary();
            return(true);
        }
Exemplo n.º 7
0
        private bool GetEmployer(SalaryUpdateViewModel viewModel)
        {
            var matchingEmployer = new Employer();

            if (viewModel.Employer?.EmployerId != null)
            {
                matchingEmployer = _data.GetEmployerInfo(viewModel.Employer.EmployerId);
            }

            if (matchingEmployer.Name == null)
            {
                viewModel.Employer = null;
                return(false);
            }

            viewModel.Employer = matchingEmployer;
            return(true);
        }
 public ActionResult _SalaryUpdateForm(SalaryUpdateViewModel model)
 {
     if (ModelState.IsValid)
     {
         int result = SalaryQueries.UpdateSalary(model);
         if (result > 0)
         {
             return(Content("success"));
         }
         else
         {
             return(Content("failed"));
         }
     }
     else
     {
         return(PartialView(model));
     }
 }
Exemplo n.º 9
0
        private void SaveOrAddRecord(SalaryUpdateViewModel viewModel)
        {
            var returnedSalary = viewModel.ReturnedSalary;

            returnedSalary.Exported = false;

            if (!_data.UpdateReturnedSalary(returnedSalary))
            {
                ModelState.AddModelError("ValidationSummary", "This employee already has more than 1 record!");
                viewModel.Status     = "Zero records added";
                viewModel.StatusPass = false;
            }
            else
            {
                viewModel.Status      = "One record added";
                viewModel.StatusPass  = true;
                viewModel.LastSuccess = viewModel.Employee.EmployeeId.ToString("00000");
            }
        }
Exemplo n.º 10
0
        private void RepopulateVm(SalaryUpdateViewModel viewModel)
        {
            // Give me back my values, dangit!
            if (viewModel.Employee != null)
            {
                var newHoursPerWeek           = viewModel.ReturnedSalary.NewHoursPerWeek;
                var newBasicCash              = viewModel.ReturnedSalary.NewBasicCash;
                var newMealsProvided          = viewModel.ReturnedSalary.NewMealsProvided;
                var newCashMealAllowance      = viewModel.ReturnedSalary.NewCashMealAllowance;
                var newCashCellphoneAllowance = viewModel.ReturnedSalary.NewCashCellphoneAllowance;
                var newTotalSalary            = viewModel.ReturnedSalary.NewTotalSalary;

                viewModel.Employee = _data.GetEmployeeInfo(viewModel.Employee.EmployeeId);
                viewModel.ReturnedSalary.NewHoursPerWeek           = newHoursPerWeek;
                viewModel.ReturnedSalary.NewBasicCash              = newBasicCash;
                viewModel.ReturnedSalary.NewMealsProvided          = newMealsProvided;
                viewModel.ReturnedSalary.NewCashMealAllowance      = newCashMealAllowance;
                viewModel.ReturnedSalary.NewCashCellphoneAllowance = newCashCellphoneAllowance;
                viewModel.ReturnedSalary.NewTotalSalary            = newTotalSalary;
                viewModel.ReturnedSalary.EmployeeId = viewModel.Employee.EmployeeId.ToString();
            }
            if (viewModel.Employer != null)
            {
                viewModel.ReturnedSalary.EmployerId = viewModel.Employer.EmployerId;

                if (viewModel.Employee != null)
                {
                    viewModel.Employee.EmployerId = viewModel.Employer.EmployerId;
                }

                viewModel.Employer = _data.GetEmployerInfo(viewModel.Employer.EmployerId);

                viewModel.ReadOnly = !Security.CanUpdateRight(viewModel.Employer.EmployerId, User.Identity.Name);
            }

            viewModel.AllowSearch    = Security.CanSearchRestricted(User.Identity.Name);
            viewModel.AllowUpdate    = Security.CanUpdateRestricted(User.Identity.Name);
            viewModel.AllowCsvButton = Security.CanExport(User.Identity.Name);
        }
Exemplo n.º 11
0
        public ActionResult Index(SalaryUpdateViewModel viewModel = null, string lastSuccess = "N/A")
        {
            var view = new SalaryUpdateViewModel();

            // if we're redirecting here from save action use that viewModel instead...
            if (viewModel?.Employee != null)
            {
                view = viewModel;
            }

            if (lastSuccess != "N/A")
            {
                view.LastSuccess = lastSuccess;
            }

            view.ReadOnly       = true;
            view.AllowSearch    = Security.CanSearchRestricted(User.Identity.Name);
            view.AllowUpdate    = Security.CanUpdateRestricted(User.Identity.Name);
            view.AllowCsvButton = Security.CanExport(User.Identity.Name);

            return(View("Index", view));
        }
        public ActionResult _SalaryUpdateForm(int id)
        {
            SalaryUpdateViewModel model = SalaryQueries.GetSalaryById(id);

            return(PartialView(model));
        }