예제 #1
0
            public async Task Handle(DeallocatePathNotificate notification, CancellationToken cancellationToken)
            {
                try
                {
                    var report  = new List <List <string> >();
                    var headers = new List <string>();

                    headers.Add("Nombre");
                    foreach (var product in notification.Sales)
                    {
                        headers.AddRange(product.Products.Select(p => p.Product.Name).ToList());
                    }
                    report.Add(headers);

                    foreach (var currentSale in notification.Sales)
                    {
                        var row = new List <string>();
                        row.Add(currentSale.StoreVisited.Name);
                        row.AddRange(currentSale.Products.Select(p => p.Cantity.ToString()).ToList());
                    }

                    var reporte = excelService.FromObjectList(report, 6, 1, false);

                    reporte.Add(new ExcelCellAux(2, 4, notification.UserSale.VisitedDate.ToString("dd-MMMM-yyyy")));
                    reporte.Add(new ExcelCellAux(3, 4, "Alberto Espinoza Morelos"));

                    var fileName = $"Ruta {notification.UserSale.Path.Name} {notification.UserSale.VisitedDate.ToString("yyyy-MM-dd")}.xlsx";

                    var parent           = Directory.GetParent(Directory.GetCurrentDirectory());
                    var filePath         = System.IO.Path.Combine(parent.FullName, "BreadingBread.Infraestructure", "Reportes", "PlantillaBasico.xlsx");
                    var absoluteFilePath = new Uri(filePath).AbsolutePath;

                    var file = excelService.AsExcel(reporte, absoluteFilePath);

                    var taskSendEmails = new List <Task>();
                    foreach (var usertNotification in notification.UsersToNotificate)
                    {
                        var email = new Email
                        {
                            To         = "*****@*****.**",
                            NameTo     = usertNotification.Name,
                            Body       = $"Hola {usertNotification.Name}",
                            From       = "Panaderia San Antonio",
                            Subject    = $"{notification.UserSale.Path.Name}, reporte de ventas",
                            IsBodyHtml = true,
                            Attachment = file,
                            FileName   = fileName,
                        };

                        var sendEmails = emailService.SendAsync(email);
                        taskSendEmails.Add(sendEmails);
                    }

                    await taskSendEmails.FirstOrDefault();

                    //Task.WaitAll(taskSendEmails);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }