示例#1
0
        public void EnviarEmailPrecificacaoAutomatica(int pedidoId, Usuario Usuario)
        {
            Pedido pedido        = _pedidoRep.GetSingle(pedidoId);
            var    usuarioMembro = _usuarioRep.FirstOrDefault(x => x.Id == pedido.UsuarioCriacaoId);

            PedidoEmailViewModel pedidoEmailVm = new PedidoEmailViewModel()
            {
                Id           = pedido.Id,
                NomeFantasia = pedido.Membro.Pessoa.PessoaJuridica.NomeFantasia
            };


            Emails emailPrecificacao = new Emails()
            {
                EmailDestinatario = Usuario.UsuarioEmail,
                CorpoEmail        = _emailService.MontaEmail(pedidoEmailVm, _templateEmailRep.GetSingle(34).Template.Replace("#CotacaoId#", "")),
                AssuntoEmail      = "Precificação Automática " + pedidoId,
                Status            = Status.NaoEnviado,
                Origem            = Origem.PrecificacaoAutomaticaCotacaoFornecedor,
                DtCriacao         = DateTime.Now,
                UsuarioCriacao    = Usuario,
                Ativo             = true
            };

            _emailsRep.Add(emailPrecificacao);
            _unitOfWork.Commit();
        }
示例#2
0
        public void EnviaEmailPedidoPromocao(int pedidoId, Usuario Usuario)
        {
            Pedido pedido = _pedidoRep.GetSingle(pedidoId);

            PedidoEmailViewModel pedidoEmailVm = new PedidoEmailViewModel()
            {
                Id           = pedido.Id,
                NomeFantasia = pedido.Membro.Pessoa.TipoPessoa == TipoPessoa.PessoaJuridica ? pedido.Membro.Pessoa.PessoaJuridica.NomeFantasia : pedido.Membro.Pessoa.PessoaFisica.Nome
            };

            Emails email = new Emails()
            {
                EmailDestinatario = Usuario.UsuarioEmail,
                CorpoEmail        = _emailService.MontaEmail(pedidoEmailVm, _templateEmailRep.GetSingle(21).Template.Replace("#Grid#", "" + MontaGridItensPedidoPromocao(pedido) + "")),
                AssuntoEmail      = "Confirmação - Número do Pedido " + pedidoId,
                Status            = Status.NaoEnviado,
                Origem            = Origem.PedidoMembroGerado,
                DtCriacao         = DateTime.Now,
                UsuarioCriacao    = Usuario
            };

            _emailsRep.Add(email);
            _unitOfWork.Commit();
        }
示例#3
0
        /// <summary>
        /// Enviar pedido do cliente Membro
        /// </summary>
        /// <param name="pedidoId"></param>
        /// <param name="situacao">1 envia pedido gerado e 2 Enviar o pedido com os preços cotados </param>
        ///
        public void EnviaEmailPedido(int pedidoId, int situacao, Usuario Usuario)
        {
            Pedido pedido        = _pedidoRep.GetSingle(pedidoId);
            var    usuarioMembro = _usuarioRep.FirstOrDefault(x => x.Id == pedido.UsuarioCriacaoId);
            PedidoEmailViewModel pedidoEmailVm = null;

            if (usuarioMembro.Pessoa.TipoPessoa == TipoPessoa.PessoaJuridica)
            {
                pedidoEmailVm = new PedidoEmailViewModel()
                {
                    Id           = pedido.Id,
                    NomeFantasia = pedido.Membro.Pessoa.PessoaJuridica.NomeFantasia
                };
            }
            else
            {
                pedidoEmailVm = new PedidoEmailViewModel()
                {
                    Id           = pedido.Id,
                    NomeFantasia = pedido.Membro.Pessoa.PessoaFisica.Nome
                };
            }

            switch (situacao)
            {
            //Depois, talvez precisamos mandar no email do cadastro do membro e no email do usuário ou mandar de acordo com a configuração decidida pelo mesmo no menu configurações do membro
            //Situacao 1 é para quando gerar o pedido
            case 1:

                Emails email1 = new Emails()
                {
                    EmailDestinatario = Usuario.UsuarioEmail,
                    CorpoEmail        = _emailService.MontaEmail(pedidoEmailVm, _templateEmailRep.GetSingle(6).Template.Replace("#Grid#", "" + MontaGridItensPedido(pedido.ItemPedidos.ToList()) + "")),
                    AssuntoEmail      = "Confirmação - Número do Pedido " + pedidoId,
                    Status            = Status.NaoEnviado,
                    Origem            = Origem.PedidoMembroGerado,
                    DtCriacao         = DateTime.Now,
                    UsuarioCriacao    = Usuario,
                    Ativo             = true
                };

                _emailsRep.Add(email1);
                _unitOfWork.Commit();

                break;

            //Situacao 2 é para quando atualizar o valor do item do pedido do cliente nesse email iremos pedir para ele aprovar
            case 2:
                Emails email2 = new Emails()
                {
                    EmailDestinatario = Usuario.UsuarioEmail,
                    CorpoEmail        = _emailService.MontaEmail(pedidoEmailVm, _templateEmailRep.GetSingle(6).Template.Replace("#Grid#", "" + MontaGridItensPedido(pedido.ItemPedidos.ToList()) + "")),
                    AssuntoEmail      = "Aprovação de Preço - Número do Pedido " + pedidoId,
                    Status            = Status.NaoEnviado,
                    Origem            = Origem.PedidoMembroAprovado,
                    DtCriacao         = DateTime.Now,
                    UsuarioCriacao    = Usuario,
                    Ativo             = true
                };

                _emailsRep.Add(email2);
                _unitOfWork.Commit();

                break;

            //Situacao 3 é quando o fornecedor aprova um pedido da Cotação
            case 3:
                var fornecedor  = _fornecedorRep.FirstOrDefault(x => x.PessoaId == Usuario.PessoaId);
                var itensPedido = pedido.ItemPedidos.Where(x => x.FornecedorId == fornecedor.Id &&
                                                           x.AprovacaoMembro && x.AprovacaoFornecedor).ToList();

                Emails email3 = new Emails()
                {
                    EmailDestinatario = usuarioMembro.UsuarioEmail,

                    CorpoEmail = _emailService.MontaEmail(pedidoEmailVm, _templateEmailRep.GetSingle(25).Template
                                                          .Replace("#Grid#", MontaGridItensPedido(itensPedido))
                                                          .Replace("#NomeFornecedor#", fornecedor.Pessoa.PessoaJuridica.NomeFantasia)),
                    AssuntoEmail   = "Itens do Pedido Aprovados - Número do Pedido " + pedidoId,
                    Status         = Status.NaoEnviado,
                    Origem         = Origem.PedidoMembroAprovado,
                    DtCriacao      = DateTime.Now,
                    UsuarioCriacao = Usuario,
                    Ativo          = true
                };

                _emailsRep.Add(email3);
                _unitOfWork.Commit();

                break;

            //Situacao 4 é quando o fornecedor aprova o pedido promocional
            case 4:

                var fornecedorPromocao = _fornecedorRep.FirstOrDefault(x => x.PessoaId == Usuario.PessoaId);

                Emails email4 = new Emails()
                {
                    EmailDestinatario = usuarioMembro.UsuarioEmail,

                    CorpoEmail = _emailService.MontaEmail(pedidoEmailVm, _templateEmailRep.GetSingle(26).Template
                                                          .Replace("#Grid#", MontaGridItensPedidoPromocao(pedido))
                                                          .Replace("#NomeFornecedor#", fornecedorPromocao.Pessoa.PessoaJuridica.NomeFantasia)),

                    AssuntoEmail   = "Pedido promocional aprovado - Número do pedido " + pedidoId,
                    Status         = Status.NaoEnviado,
                    Origem         = Origem.PedidoMembroAprovado,
                    DtCriacao      = DateTime.Now,
                    UsuarioCriacao = Usuario,
                    Ativo          = true
                };

                _emailsRep.Add(email4);
                _unitOfWork.Commit();

                break;

            //Envia email quando fornecedor confirma entrega dos itens do pedido.
            case 5:

                var fornecedorEntrega = _fornecedorRep.FirstOrDefault(x => x.PessoaId == Usuario.PessoaId);

                var itensPedidoEntrega = pedido.ItemPedidos.Where(x => x.FornecedorId == fornecedorEntrega.Id &&
                                                                  x.AprovacaoMembro && x.AprovacaoFornecedor).ToList();

                var tipoPedido = pedido.ItemPedidos
                                 .Any(x => x.FornecedorId == fornecedorEntrega.Id &&
                                      x.AprovacaoMembro && x.AprovacaoFornecedor &&
                                      x.Produto.ProdutoPromocionalId == null);


                var nomeMembro = pedido.Membro.Pessoa.TipoPessoa == TipoPessoa.PessoaJuridica ?
                                 pedido.Membro.Pessoa.PessoaJuridica.NomeFantasia :
                                 pedido.Membro.Pessoa.PessoaFisica.Nome;

                var corpoEmail = _templateEmailRep.GetSingle(32).Template
                                 .Replace("#IdPedido#", pedido.Id.ToString())
                                 .Replace("#NomeMembro#", nomeMembro)
                                 .Replace("#NomeFornecedor#", fornecedorEntrega.Pessoa.PessoaJuridica.NomeFantasia)
                                 .Replace("#Grid#", tipoPedido ? MontaGridItensPedido(itensPedidoEntrega)
                                                      : MontaGridItensPedidoPromocao(pedido));

                var email = new Emails
                {
                    UsuarioCriacao    = Usuario,
                    DtCriacao         = DateTime.Now,
                    AssuntoEmail      = "Fornecedor confirmou a entrega dos itens do pedido " + pedido.Id + ".",
                    EmailDestinatario = usuarioMembro.UsuarioEmail,
                    CorpoEmail        = corpoEmail.Trim(),
                    Status            = Status.NaoEnviado,
                    Origem            = Origem.FornecedorConfirmaEntregaPedido,
                    Ativo             = true
                };

                _emailsRep.Add(email);
                _unitOfWork.Commit();

                break;


            //Envia email quando fornecedor despachar dos itens do pedido.
            case 6:

                var fornecedorDespacho = _fornecedorRep.FirstOrDefault(x => x.PessoaId == Usuario.PessoaId);

                var itensPedidoDespacho = pedido.ItemPedidos.Where(x => x.FornecedorId == fornecedorDespacho.Id &&
                                                                   x.AprovacaoMembro && x.AprovacaoFornecedor).ToList();

                var tipoPedidoDespacho = pedido.ItemPedidos
                                         .Any(x => x.FornecedorId == fornecedorDespacho.Id &&
                                              x.AprovacaoMembro && x.AprovacaoFornecedor &&
                                              x.Produto.ProdutoPromocionalId == null);


                var nomeMembroDespacho = pedido.Membro.Pessoa.TipoPessoa == TipoPessoa.PessoaJuridica ?
                                         pedido.Membro.Pessoa.PessoaJuridica.NomeFantasia :
                                         pedido.Membro.Pessoa.PessoaFisica.Nome;

                var corpoEmailDespacho = _templateEmailRep.GetSingle(40).Template
                                         .Replace("#IdPedido#", pedido.Id.ToString())
                                         .Replace("#NomeMembro#", nomeMembroDespacho)
                                         .Replace("#NomeFornecedor#", fornecedorDespacho.Pessoa.PessoaJuridica.NomeFantasia)
                                         .Replace("#Grid#", tipoPedidoDespacho ? MontaGridItensPedido(itensPedidoDespacho)
                                                      : MontaGridItensPedidoPromocao(pedido));

                var emailDespacho = new Emails
                {
                    UsuarioCriacao    = Usuario,
                    DtCriacao         = DateTime.Now,
                    AssuntoEmail      = "Fornecedor Despachou para Entrega itens do seu pedido " + pedido.Id + ".",
                    EmailDestinatario = usuarioMembro.UsuarioEmail,
                    CorpoEmail        = corpoEmailDespacho.Trim(),
                    Status            = Status.NaoEnviado,
                    Origem            = Origem.FornecedorDespachouItensPedido,
                    Ativo             = true
                };

                _emailsRep.Add(emailDespacho);
                _unitOfWork.Commit();
                break;
            }
        }