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