Example #1
0
        public async Task <IActionResult> AddEmployee([Bind("IdEmployee,FullName,Address,Telephone,Employment,Salary,Pid")] Employee employee)
        {
            if (ModelState.IsValid)
            {
                _context.Add(employee);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(EmployeesList)));
            }
            return(View(employee));
        }
Example #2
0
        public async Task <IActionResult> AddContract([Bind("IdContract,Date,Provider,Price,Type")] Contract contract)
        {
            // only admins can add contracts
            if (Authentication.Instance.isLoggedIn() && Authentication.Instance.isAdmin())
            {
                if (ModelState.IsValid)
                {
                    _context.Add(contract);
                    await _context.SaveChangesAsync();

                    return(RedirectToAction(nameof(ContractsList)));
                }
                return(View(contract));
            }
            else
            {
                return(Redirect("~/MainPage"));
            }
        }
Example #3
0
        /// <summary>
        /// Finds or adds new weakness for the POAM
        /// </summary>
        /// <param name="originalRecommendation">Original Recommendation of the POAM</param>
        /// <param name="risk">The Risk of the POAM</param>
        /// <returns>The weakness object</returns>
        private async Task <Weakness> CrateWeakness(string originalRecommendation, string risk)
        {
            Weakness weakness = null;

            //Find if the weakness exists
            weakness = await _context.Weaknesses.Where(item => item.OriginalRecommendation == originalRecommendation && item.Risk == risk).FirstOrDefaultAsync();

            // if the weakness does not exist, create a new weakness
            if (weakness == null)
            {
                weakness = new Weakness
                {
                    Risk = risk,
                    OriginalRecommendation = originalRecommendation
                };
                // Add the object to the database
                _context.Weaknesses.Add(weakness);
                // Save the object. This will get the ID field populated as well
                await _context.SaveChangesAsync();
            }
            return(weakness ?? throw new Exception(@"Weakness not found and/or could not be created"));
        }
Example #4
0
        public async Task <IActionResult> Import(IFormFile fileupload)
        {
            // get the poam list from the uploaded worksheet
            var poams = _entityservice.ReadPOAMsFromExcel(fileupload);

            // add the poam list to persistent storage
            foreach (var item in await poams)
            {
                _context.POAMs.Add(item);
                await _context.SaveChangesAsync();
            }
            // Redirect back to the index page
            return(RedirectToAction("Index", "POAM"));
        }
Example #5
0
        public async Task <IActionResult> Create(POAMViewModel poam)
        {
            try
            {
                var entity = await _entityservice.CreatePOAMFromViewModel(poam);

                _context.POAMs.Add(entity);
                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(RedirectToAction("Index"));
        }
Example #6
0
        public async Task <IActionResult> AddPaymentReceipt([Bind("IdReceipt,Date,Amount,IdApartment")] Receipt receipt)
        {
            var apartment = _context.Apartment.FirstOrDefault(a => a.IdApartment == receipt.IdApartment);

            // owner of the apartment can add a payment receipt
            if (Authentication.Instance.isLoggedIn() && apartment.IdOwner == Authentication.Instance.getCurrentUser().IdOwner)
            {
                if (ModelState.IsValid)
                {
                    _context.Add(receipt);
                    await _context.SaveChangesAsync();

                    return(Redirect("~/ApartmentsOwned"));
                }
                return(View(receipt));
            }
            else
            {
                return(Redirect("~/ApartmentsOwned"));
            }
        }
        public async Task <IActionResult> AddWaterConsumption([Bind("IdWaterConsumption,WarmWater,ColdWater,Date,IdApartment")] WaterConsumption waterConsumption)
        {
            var apartment = _context.Apartment.FirstOrDefault(a => a.IdApartment == waterConsumption.IdApartment);

            // owner of the apartment can add water consumption
            if (Authentication.Instance.isLoggedIn() && apartment.IdOwner == Authentication.Instance.getCurrentUser().IdOwner)
            {
                if (ModelState.IsValid)
                {
                    _context.Add(waterConsumption);
                    await _context.SaveChangesAsync();

                    return(Redirect("~/ApartmentsOwned"));
                }
                return(View(waterConsumption));
            }
            else
            {
                return(Redirect("~/ApartmentsOwned"));
            }
        }
Example #8
0
        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"));
            }
        }