public async Task <IActionResult> EditEmployee(int id, [Bind("IdEmployee,FullName,Address,Telephone,Employment,Salary,Pid")] Employee employee) { if (id != employee.IdEmployee) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(employee); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!EmployeeExists(employee.IdEmployee)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(EmployeesList))); } return(View(employee)); }
public async Task <IActionResult> MainPage() { // only logged users can see the main page if (Authentication.Instance.isLoggedIn()) { var apartments = _context.Apartment.Include(a => a.IdOwnerNavigation).OrderBy(a => a.IdOwnerNavigation.FullName); var contracts = _context.Contract; var employees = _context.Employee; // total salary of all employees double salarySum = 0; foreach (var employee in employees) { salarySum += employee.Salary; } //number of all association tenants byte totalAssociationTenants = 0; foreach (var apartment in apartments) { if (apartment.NoTenants != null) { totalAssociationTenants += apartment.NoTenants.Value; } } // compute personnel salary tax per tenant double taxPerTenant = salarySum / totalAssociationTenants; foreach (Apartment apartment in apartments) { var waterConsumptions = _context.WaterConsumption.Where(w => w.IdApartment == apartment.IdApartment); var receipts = _context.Receipt.Where(r => r.IdApartment == apartment.IdApartment); DateTime date = DateTime.Now; WaterConsumption oldWaterConsumption = waterConsumptions.FirstOrDefault(w => w.Date.Month != date.Month); // if an old report of water consumption was found if (oldWaterConsumption != null) { // current debt becomes previous debt apartment.PreviousDebt += apartment.CurrentDebt; // delete the report _context.WaterConsumption.Remove(oldWaterConsumption); } apartment.CurrentDebt = 0; var currentWaterConsumption = waterConsumptions.FirstOrDefault(w => w.Date.Month == date.Month); // compute payment for warm and cold water in the current month if (currentWaterConsumption != null) { var warmWaterContract = contracts.FirstOrDefault(c => c.Type == "Warm Water"); var coldWaterContract = contracts.FirstOrDefault(c => c.Type == "Cold Water"); apartment.CurrentDebt += currentWaterConsumption.ColdWater * coldWaterContract.Price + currentWaterConsumption.WarmWater * warmWaterContract.Price; } // for other contracts add tax per tenant foreach (var contract in contracts) { if (contract.Type != "Water") { apartment.CurrentDebt += contract.Price * apartment.NoTenants; } } // add personnel salary tax per tenant apartment.CurrentDebt += apartment.NoTenants * taxPerTenant; //subtract amount from current debt based on receipts var currentReceipts = receipts.Where(r => r.Date.Month == date.Month); foreach (var receipt in currentReceipts) { if (apartment.CurrentDebt != 0) { apartment.CurrentDebt -= receipt.Amount; } else { if (apartment.PreviousDebt != 0) { apartment.PreviousDebt -= receipt.Amount; } } } apartment.CurrentDebt = Math.Round((double)apartment.CurrentDebt, 2); apartment.PreviousDebt = Math.Round((double)apartment.PreviousDebt, 2); apartment.TotalDebt = apartment.PreviousDebt + apartment.CurrentDebt; _context.Update(apartment); } await _context.SaveChangesAsync(); return(View(await apartments.ToListAsync())); } else { return(Redirect("~/Home/Index")); } }