/// <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);
        }