/// <summary> /// Отправка отчета по заявкам и заказам с расшифровкой по продуктам /// </summary> /// <param name="model"></param> public void SendReriodRequestsAndOrdersToPdf(ReportPeriodBindingModel model) { model.FileName = "C:\\Users\\User\\Downloads\\tempBarnyard.pdf"; SaveToPdf.CreateDoc(new PdfInfo { FileName = model.FileName, Title = "Заявка на продукты", DateFrom = model.DateFrom, DateTo = model.DateTo, RequestsAndOrders = GetRequestOrderProducts(model) }); MailLogic.MailSendAsync(new MailSendInfo { MailAddress = clientLogic.Read(new ClientBindingModel { Id = model.ClientId })?[0]?.Email, Subject = $"Отчет по заявкам и заказам за период с расшифровкой по продуктам", Text = $"Отчет за период с {model.DateFrom} по {model.DateTo}." }, model.FileName); }
/// <summary> /// Получение списка заявок и заказов с расшифровкой по продуктам /// </summary> /// <returns></returns> public List <ReportRequestAndOrderProductsViewModel> GetRequestOrderProducts(ReportPeriodBindingModel model) { var reportList = new List <ReportRequestAndOrderProductsViewModel>(); var requests = requestLogic.Read(new RequestBindingModel { DateFrom = model.DateFrom, DateTo = model.DateTo }); var orders = orderLogic.Read(new OrderBindingModel { DateFrom = model.DateFrom, DateTo = model.DateTo }); int ri = 0; int oi = 0; while (ri < requests.Count && oi < orders.Count) { if (requests[ri].DateRequest < orders[oi].DateCreate) { foreach (var product in requests[ri].RequestProducts) { reportList.Add(new ReportRequestAndOrderProductsViewModel { Id = requests[ri].Id.Value, DateCreate = requests[ri].DateRequest, DishName = string.Empty, ProductName = product.Value.Item1, Count = product.Value.Item2 }); } ri++; } else { foreach (var dish in orders[oi].OrderDishes) { var currentDish = dishLogic.Read(new DishBindingModel { Id = dish.Key })[0]; foreach (var product in currentDish.DishProducts) { reportList.Add(new ReportRequestAndOrderProductsViewModel { Id = null, DateCreate = orders[oi].DateCreate, DishName = currentDish.DishName, ProductName = product.Value.Item1, Count = product.Value.Item2 }); } } oi++; } } while (ri < requests.Count) { foreach (var product in requests[ri].RequestProducts) { reportList.Add(new ReportRequestAndOrderProductsViewModel { Id = requests[ri].Id.Value, DateCreate = requests[ri].DateRequest, DishName = string.Empty, ProductName = product.Value.Item1, Count = product.Value.Item2 }); } ri++; } while (oi < orders.Count) { foreach (var dish in orders[oi].OrderDishes) { var currentDish = dishLogic.Read(new DishBindingModel { Id = dish.Key })[0]; foreach (var product in currentDish.DishProducts) { reportList.Add(new ReportRequestAndOrderProductsViewModel { Id = null, DateCreate = orders[oi].DateCreate, DishName = currentDish.DishName, ProductName = product.Value.Item1, Count = product.Value.Item2 }); } } oi++; } return(reportList); }