Exemplo n.º 1
0
        public static object Get(this PedidoPdf request,
                                 Factory factory,
                                 IHttpRequest httpRequest,
                                 User user)
        {
            return(factory.Execute(proxy => {
                Pedido pedido = proxy.FirstOrDefault <Pedido>(q => q.Consecutivo == request.Consecutivo);
                if (pedido == default(Pedido))
                {
                    throw HttpError.NotFound(string.Format("No existe Oferta con Consecutivo: '{0}'", request.Consecutivo));
                }


                List <PedidoItem> items =
                    proxy.Get <PedidoItem>(q => q.IdPedido == pedido.Id).OrderBy(f => f.Id).ToList();
                //proxy.Get<PedidoItem>(q=>q.IdPedido==pedido.Id).OrderBy(f=>f.IdServicio).ToList();


                User sendBy = new User();                 // el que lo envio !!!

                if (user.Id != pedido.IdEnviadoPor)
                {
                    sendBy = proxy.FirstOrDefault <User>(q => q.Id == pedido.IdEnviadoPor);
                    if (sendBy == default(User))
                    {
                        user = new User()
                        {
                            FirstName = "indefinido",
                            LastName = "indefinido"
                        };
                    }
                }
                else
                {
                    sendBy.PopulateWith(user);
                }

                var empresa = proxy.GetEmpresa();


                OfertaPdf pdf = new OfertaPdf(httpRequest.ApplicationFilePath);

                string logo = Path.Combine(Path.Combine(httpRequest.ApplicationFilePath, "resources"), "logo.png");
                string file = Path.Combine(Path.Combine(httpRequest.ApplicationFilePath, "App_Data"),
                                           string.Format("oferta-{0}.pdf", pedido.Consecutivo));

                using (var stream = new MemoryStream()){
                    pdf.CreatePDF(empresa, user, pedido, items, logo, BL.Prefijo,
                                  stream, new OfertaMargin(5, 5, 100, 30));

                    stream.Position = 0;

                    using (var fileStream = new FileStream(file, FileMode.Create)){
                        stream.CopyTo(fileStream);
                        fileStream.Close();
                        return new HttpResult(new FileInfo(file), asAttachment: true);
                    }
                }
            }));
        }
Exemplo n.º 2
0
        public static Response <PedidoMail> Get(this PedidoMail request,
                                                Factory factory,
                                                IHttpRequest httpRequest,
                                                Mailer mailService,
                                                User user)
        {
            return(factory.Execute(proxy => {
                Pedido pedido = proxy.FirstOrDefault <Pedido>(q => q.Consecutivo == request.Consecutivo);
                if (pedido == default(Pedido))
                {
                    throw HttpError.NotFound(string.Format("No existe Oferta con Consecutivo: '{0}'", request.Consecutivo));
                }

                if (!pedido.FechaEnvio.HasValue)
                {
                    throw HttpError.Unauthorized(
                        string.Format("Oferta con Consecutivo:'{0}' No esta en estado ENVIADA", request.Consecutivo));
                }

                List <PedidoItem> items =
                    proxy.Get <PedidoItem>(q => q.IdPedido == pedido.Id).OrderBy(f => f.Id).ToList();
                //proxy.Get<PedidoItem>(q=>q.IdPedido==pedido.Id).OrderBy(f=>f.IdServicio).ToList();


                var oferta = new OfertaHtml();
                User sendBy = new User();                 // el que lo envio !!!

                if (user.Id != pedido.IdEnviadoPor)
                {
                    sendBy = proxy.FirstOrDefault <User>(q => q.Id == pedido.IdEnviadoPor);
                    if (sendBy == default(User))
                    {
                        user = new User()
                        {
                            FirstName = "indefinido",
                            LastName = "indefinido"
                        };
                    }
                }
                else
                {
                    sendBy.PopulateWith(user);
                }
                var empresa = proxy.GetEmpresa();

                var html = oferta.ConstruirHtmlReport(empresa,
                                                      user,
                                                      pedido,
                                                      items,
                                                      request.TextoInicial);

                MailMessage message = new MailMessage();
                message.Subject = !request.Asunto.IsNullOrEmpty()?
                                  request.Asunto:
                                  string.Format("Envio Oferta No:{0}", pedido.Consecutivo.ToString().PadLeft(8, '0'));

                message.ReplyToList.Add(user.Email);
                message.From = new MailAddress(user.Email);

                var mc = !pedido.MailContacto.IsNullOrEmpty()?pedido.MailContacto:user.Email;

                message.To.Add(mc);

                if (!pedido.MailDestinatario.IsNullOrEmpty() &&

                    (mc.Trim().ToUpper() != pedido.MailDestinatario.Trim().ToUpper()))
                {
                    message.CC.Add(pedido.MailDestinatario);
                }

                message.Bcc.Add(user.Email);

                if (!empresa.ApplicationMailBox.IsNullOrEmpty())
                {
                    message.Bcc.Add(empresa.ApplicationMailBox);
                }

                message.Body = html;
                message.IsBodyHtml = true;

                OfertaPdf pdf = new OfertaPdf(httpRequest.ApplicationFilePath);

                string logo = Path.Combine(Path.Combine(httpRequest.ApplicationFilePath, "resources"), "logo.png");

                using (var stream = new MemoryStream()){
                    pdf.CreatePDF(empresa, user, pedido, items, logo, "CMK-S",
                                  stream, new OfertaMargin(5, 5, 90, 15));
                    stream.Position = 0;
                    message.Attachments.Add(new Attachment(stream, string.Format("oferta-{0}.pdf", pedido.Consecutivo)));
                    mailService.Send(message);
                }


                return new Response <PedidoMail>();
            }));
        }