public Report(decimal sum, FilterPharmaciesReportDTO dates, Employee employee, Pharmacy pharmacy) { OrderAmount = sum; DateFrom = dates.DateFrom; DateTo = dates.DateTo; Employee = employee; Pharmacy = pharmacy; }
public async Task <ActionResult <GetDataTDTO <PharmacyReportDTO> > > GetPharmaciesReport( FilterPharmaciesReportDTO model) { if (!IsValidApiRequest()) { return(ApiBadRequest("Invalid Headers!")); } var pharmacies = await Context.Pharmacy .Select(z => new PharmacyDTO(z)) .ToListAsync(); decimal bigger = 0; var profit = new List <PharmacyProfitDTO>(); var report = new PharmaciesReportDTO(); foreach (var item in pharmacies) { decimal pharmacyProfit = Context.Report .Where(r => r.Pharmacy.Id == item.Id && DateTime.Compare(r.DateFrom, model.DateFrom) >= 0 && DateTime.Compare(r.DateTo, model.DateTo) <= 0).Sum(r => r.OrderAmount); profit.Add(new PharmacyProfitDTO(item.Address, pharmacyProfit)); report.PharmaciesAmount += pharmacyProfit; report.PharmaciesCounter++; if (bigger <= pharmacyProfit) { bigger = pharmacyProfit; report.TopPharmacy = item.Address; } } report.BiggestAmount = bigger; report.ProfitByPharmacy = profit; return(Ok(new GetDataTDTO <PharmaciesReportDTO>(report))); }
public async Task <IActionResult> CreateReport(FilterPharmaciesReportDTO model) { if (!IsValidApiRequest()) { return(ApiBadRequest("Invalid Headers!")); } var user = await GetCurrentUser(); decimal sum = Context.Order .Where(o => o.Employee == user) .Where(o => DateTime.Compare(o.OrderTime, model.DateFrom) >= 0) .Where(o => DateTime.Compare(o.OrderTime, model.DateTo) <= 0) .Include(o => o.Products) .SelectMany(o => o.Products) .Sum(pb => pb.Price * pb.Quantity); var report = new Report(sum, model, user, user.Pharmacy); await Context.Report.AddAsync(report); await Context.SaveChangesAsync(); return(StatusCode(201)); }