public async Task <ReportDto[]> GetList(ReportFilterDto filter) { _logger.LogDebug($"Calling getList Report"); IQueryable <Report> query = _dbCtx.Reports; if (filter.Id != Guid.Empty) { query = query.Where(x => x.Id == filter.Id); } if (filter.Enabled.HasValue) { query = query.Where(x => x.Enabled == filter.Enabled.Value); } if (filter.Family.HasValue) { query = query.Where(x => x.Family == (dal.Entities.ReportFamily)filter.Family.Value); } var result = await query.ToArrayAsync(); return(result.Select(x => x.ToDto()).ToArray()); }
public async Task <ActionResult <ReportDto[]> > GetListFiltered([FromBody] ReportFilterDto filter) { var res = await _service.GetList(filter); return(res); }
public async Task <PayrollReportResponseDto> GetPayrollReportAsync(ReportFilterDto payrollFilterDto) { string[] splitDate = payrollFilterDto.Date.Split("/"); CultureInfo ci = new CultureInfo("es-Do"); DateTime startedDate = new DateTime(int.Parse(splitDate[1]), int.Parse(splitDate[0]), 1); DateTime endDate = new DateTime(int.Parse(splitDate[1]), int.Parse(splitDate[0]) + 1, 1).AddDays(-1); IEnumerable <Payroll> result = await _payrollRepository.FindAsync(payroll => payroll.PayrollDate >= startedDate && payroll.PayrollDate <= endDate); IEnumerable <PayrollDetailDto> response = result.OrderBy(payroll => payroll.PayrollDate).Select(payroll => new PayrollDetailDto() { Employee = payroll.EmployeeId.ToString(), NetTotal = payroll.NetSalary.ToString("C", ci), RawTotal = payroll.RawSalary.ToString("C", ci), Gender = "", TaxTotal = payroll.TaxableSalary.ToString("C", ci), Status = payroll.Status ? "Activo" : "Inactivo", PayrollDate = payroll.PayrollDate.Value.ToString("m"), Id = payroll.Id }).ToList(); foreach (var item in response) { Employee employee = await _employeeRepository.GetByIdAsync(int.Parse(item.Employee)); item.Employee = $"{employee.Name} {employee.LastName}"; item.Gender = employee.Gender; } if (!string.IsNullOrEmpty(payrollFilterDto.Filter)) { response = response.Where(item => item.Employee.ToUpper().Contains(payrollFilterDto.Filter.ToUpper())); } if (!string.IsNullOrEmpty(payrollFilterDto.Gender)) { response = response.Where(item => item.Gender == payrollFilterDto.Gender); } if (!string.IsNullOrEmpty(payrollFilterDto.Status)) { response = response.Where(item => item.Status == payrollFilterDto.Status); } switch (payrollFilterDto.OrderBy) { case "NameUp": response = response.OrderBy(item => item.Employee); break; case "NameDown": response = response.OrderByDescending(item => item.Employee); break; case "SalaryUp": response = response.OrderBy(item => item.NetTotal); break; case "SalaryDown": response = response.OrderByDescending(item => item.NetTotal); break; default: break; } var groupList = response.GroupBy(item => item.PayrollDate); var responseList = new List <PayrollResults>(); foreach (var item in groupList) { var itemToInsert = new PayrollResults(); itemToInsert.PayrollName = $"Nomina del {item.Key} - {item.FirstOrDefault().Status}"; itemToInsert.RawTotal = item.Sum(p => float.Parse(p.RawTotal.Replace(",", "").Replace("$", ""), CultureInfo.InvariantCulture)).ToString("C", ci); itemToInsert.TaxTotal = item.Sum(p => float.Parse(p.TaxTotal.Replace(",", "").Replace("$", ""), CultureInfo.InvariantCulture)).ToString("C", ci); itemToInsert.NetTotal = item.Sum(p => float.Parse(p.NetTotal.Replace(",", "").Replace("$", ""), CultureInfo.InvariantCulture)).ToString("C", ci); itemToInsert.Results = new List <PayrollDetailDto>(); foreach (var data in item) { itemToInsert.Results.Add(data); } responseList.Add(itemToInsert); } return(new PayrollReportResponseDto() { Results = responseList, Filters = payrollFilterDto }); }
public async Task <IActionResult> ReportAsync(ReportFilterDto payrollFilterDto) { PayrollReportResponseDto response = await _payrollService.GetPayrollReportAsync(payrollFilterDto); return(View(response)); }
public async Task <Pager <CustomerCreditUtilizedDto> > GetCustomerCreditUtilizedComparedReport(ReportFilterDto filter) { var company = await _companyManager.FindInclude(filter.CompanyId); if (company.Settings == null || !company.Settings.SaveCreditValues) { return(new Pager <CustomerCreditUtilizedDto>(new List <CustomerCreditUtilizedDto>(), 0, filter.Offset, filter.Limit)); } var creditUtilizedSettings = await _businessManager.GetCustomerCreditUtilizedSettings(filter.CompanyId, filter.Date); if (creditUtilizedSettings == null) { creditUtilizedSettings = new CustomerCreditUtilizedSettingsDto() { RoundType = company.Settings.RoundType, CompanyId = company.Id }; } var creditUtilizedList = new List <CustomerCreditUtilizedDto>(); var report = await GetAgingReport(filter.CompanyId, filter.Date, 30, 4, false); foreach (var data in report.Rows) { var customer = data.Customer; var value = data.Data["Total"];//new height credit if (creditUtilizedSettings.RoundType == RoundType.RoundUp) { value = Math.Ceiling(value); } else if (creditUtilizedSettings.RoundType == RoundType.RoundDown) { value = Math.Floor(value); } var creditUtilized = customer.CreditUtilizeds.FirstOrDefault(); if (creditUtilized == null || (creditUtilized.CreatedDate != filter.Date && creditUtilized.Value < value)) { if (creditUtilized == null) { creditUtilized = new CustomerCreditUtilizedDto() { CreatedDate = DateTime.Now }; } creditUtilized.CustomerId = customer.Id; creditUtilized.Customer = customer; creditUtilized.IsNew = true; creditUtilized.NewValue = value; creditUtilized.NewCreatedDate = filter.Date; creditUtilizedList.Add(creditUtilized); } else if (creditUtilized.Value < value) { creditUtilized.CustomerId = customer.Id; creditUtilized.Customer = customer; creditUtilized.NewValue = value; creditUtilized.NewCreatedDate = filter.Date; creditUtilizedList.Add(creditUtilized); } } var count = creditUtilizedList.Count(); if (count == 0) { return(new Pager <CustomerCreditUtilizedDto>(new List <CustomerCreditUtilizedDto>(), 0, filter.Offset, filter.Limit)); } var page = (filter.Offset + filter.Limit) / filter.Limit; var pager = new Pager <CustomerCreditUtilizedDto>(creditUtilizedList.Skip(filter.Offset).Take(filter.Limit), count, page, filter.Limit); return(pager); }
/// <summary> /// Display Credit Utilized Report by Company and Month with the options to delete record /// </summary> /// <param name="filter"></param> /// <returns></returns> public async Task <Pager <CustomerCreditUtilizedDto> > GetCustomerCreditUtilizedReport(ReportFilterDto filter) { var customers = await _customerManager.FindByCompanyId(filter.CompanyId); customers = customers.Where(x => (true) && (string.IsNullOrEmpty(filter.Search) || x.Name.ToLower().Contains(filter.Search.ToLower()) || x.No.ToLower().Contains(filter.Search.ToLower())) ).ToList(); var credits = await _customerCreditUtilizedManager.FindByCompanyIdAndDate(filter.CompanyId, filter.Date); credits = credits.GroupBy(x => x.Customer, x => x, (customer, credits) => new { Customer = customer, Credit = credits.OrderByDescending(x => x.CreatedDate).FirstOrDefault() }) .Where(x => x.Credit != null) .Select(x => x.Credit).ToList(); var dates = credits.GroupBy(x => x.CreatedDate).Select(x => x.Key) .OrderBy(x => x) .Select(x => $"{x.Month}/{x.Year}") .ToList(); if (filter.FilterDate.HasValue) { credits = credits.Where(x => x.CreatedDate.ToString("MM/yyyy") == filter.FilterDate.Value.ToString("MM/yyyy")).ToList(); } var result = _mapper.Map <List <CustomerCreditUtilizedDto> >(credits); var count = result.Count; if (count == 0) { return(new Pager <CustomerCreditUtilizedDto>(new List <CustomerCreditUtilizedDto>(), 0, filter.Offset, filter.Limit)); } var page = (filter.Offset + filter.Limit) / filter.Limit; var pager = new Pager <CustomerCreditUtilizedDto>(result.Skip(filter.Offset).Take(filter.Limit), count, page, filter.Limit); pager.Filter.Add("CreatedDate", dates); return(pager); }
public async Task <IActionResult> ReportAsync(ReportFilterDto employeeFilterDto) { CultureInfo ci = new CultureInfo("es-Do"); IEnumerable <Employee> result = await _employeeRepository.GetAllAsync(); var response = result.Select(employee => new EmployeeDto() { Gender = employee.Gender, Id = employee.Id, LastName = employee.LastName, Name = employee.Name, Status = employee.Status ? "Activo": "Inactivo", Salary = employee.Salary.ToString("C", ci) }).ToList(); if (!string.IsNullOrEmpty(employeeFilterDto.Filter)) { response = response.Where(item => item.Name.ToUpper().Contains(employeeFilterDto.Filter.ToUpper()) || item.LastName.ToUpper().Contains(employeeFilterDto.Filter.ToUpper()) || item.Salary.ToString().Contains(employeeFilterDto.Filter)).ToList(); } if (!string.IsNullOrEmpty(employeeFilterDto.Gender)) { response = response.Where(item => item.Gender == employeeFilterDto.Gender).ToList(); } if (!string.IsNullOrEmpty(employeeFilterDto.Status)) { response = response.Where(item => item.Status == employeeFilterDto.Status).ToList(); } float total = 0; foreach (var item in response) { total += float.Parse(item.Salary.Replace(",", "").Replace("$", ""), CultureInfo.InvariantCulture); } var totalSalary = total.ToString("C", ci); switch (employeeFilterDto.OrderBy) { case "NameUp": response = response.OrderBy(item => item.Name).ToList(); break; case "NameDown": response = response.OrderByDescending(item => item.Name).ToList(); break; case "LastNameUp": response = response.OrderBy(item => item.LastName).ToList(); break; case "LastNameDown": response = response.OrderByDescending(item => item.LastName).ToList(); break; case "SalaryUp": response = response.OrderBy(item => item.Salary).ToList(); break; case "SalaryDown": response = response.OrderByDescending(item => item.Salary).ToList(); break; default: break; } return(View(new EmployeeResponseDto() { Results = response, Filters = employeeFilterDto, TotalSalary = totalSalary })); }