public async Task <Response> CreateReport([FromBody] InvoicingPrinterCriteria criteria, InvoicingPrinterVM report) { var viewResult = compositeViewEngine.FindView(ControllerContext, "CreateReport", false); var viewDictionary = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary()) { Model = report }; var viewContext = new ViewContext(ControllerContext, viewResult.View, viewDictionary, TempData, new StringWriter(), new HtmlHelperOptions()); var result = repo.Get(criteria); return(await repo.CreatePDF(viewResult, viewContext, result)); }
public InvoicingPrinterVM Get(InvoicingPrinterCriteria criteria) { var record = context.Set <Reservation>() .Include(x => x.Customer) .Include(x => x.Destination) .Include(x => x.PickupPoint).ThenInclude(x => x.CoachRoute) .Include(x => x.Port) .Include(x => x.Ship) .Include(x => x.Passengers) .Where(x => x.Date == Convert.ToDateTime(criteria.Date) && x.CustomerId == criteria.CustomerId) .AsEnumerable() .GroupBy(x => x.Customer).OrderBy(x => x.Key.Description) .Select(x => new InvoicingPrinterDTO { Date = criteria.Date, Customer = new SimpleResource { Id = x.Key.Id, Description = x.Key.Description }, Ports = x.GroupBy(x => x.Port).OrderBy(x => !x.Key.IsPrimary).Select(x => new InvoicingPrinterPortDTO { Port = x.Key.Description, HasTransferGroup = x.GroupBy(x => x.PickupPoint.CoachRoute.HasTransfer).Select(x => new HasTransferGroupDTO { HasTransfer = x.Key, Adults = x.Sum(x => x.Adults), Kids = x.Sum(x => x.Kids), Free = x.Sum(x => x.Free), TotalPersons = x.Sum(x => x.TotalPersons), TotalPassengers = x.Sum(x => x.Passengers.Count(x => x.IsCheckedIn)) }).OrderBy(x => !x.HasTransfer), Adults = x.Sum(x => x.Adults), Kids = x.Sum(x => x.Kids), Free = x.Sum(x => x.Free), TotalPersons = x.Sum(x => x.TotalPersons), TotalPassengers = x.Sum(x => x.Passengers.Count(x => x.IsCheckedIn)) }), Adults = x.Sum(x => x.Adults), Kids = x.Sum(x => x.Kids), Free = x.Sum(x => x.Free), TotalPersons = x.Sum(x => x.TotalPersons), Reservations = x.OrderBy(x => !x.PickupPoint.CoachRoute.HasTransfer).ToList() }).FirstOrDefault(); return(mapper.Map <InvoicingPrinterDTO, InvoicingPrinterVM>(record)); }