private static ServicoContratado CriarVinculoContrato(ServicoMigracaoDTO servicoMigradoDTO, string usuario)
        {
            ServicoContratado servicoContratado = new ServicoContratado();

            servicoContratado.Contrato = new Contrato
            {
                DescStatusSalesForce = "",
                IdMoeda           = 1,
                NrAssetSalesForce = servicoMigradoDTO.DescricaoContrato,
                DescContrato      = servicoMigradoDTO.DescricaoOperacao,
                DtInicial         = servicoMigradoDTO.DtInicioContrato.Value,
                DtFinalizacao     = servicoMigradoDTO.DtFimContrato,
                DataAlteracao     = DateTime.Now,
                Usuario           = usuario
            };
            foreach (var idCliente in servicoMigradoDTO.IdsClientes)
            {
                if (!servicoContratado.Contrato.ClientesContratos.Any(x => x.IdCliente == idCliente))
                {
                    servicoContratado.Contrato.ClientesContratos.Add(new ClienteContrato
                    {
                        IdCliente     = idCliente,
                        DataAlteracao = DateTime.Now,
                        Usuario       = usuario
                    });
                }
            }
            return(servicoContratado);
        }
        public void MigrarServicoEacesso(ServicoContratado servico)
        {
            _servicoContratadoRepository.Update(servico);
            var depara = _deParaServicoRepository.Buscar(x => x.IdServicoContratado == servico.Id).FirstOrDefault();

            depara.DescStatus = "AP";
            _deParaServicoRepository.Update(depara);
            _unitOfWork.Commit();
        }
 private static void CriarVinculoMarkup(ServicoMigracaoDTO servicoMigradoDTO, ServicoContratado servicoContratado, string usuario)
 {
     servicoContratado.VinculoMarkupServicosContratados.Add(new VinculoMarkupServicoContratado
     {
         DtInicioVigencia = servicoMigradoDTO.DtInicioContrato.Value,
         VlMarkup         = servicoMigradoDTO.MarkUp ?? 0,
         DataAlteracao    = DateTime.Now,
         Usuario          = usuario
     });
 }
        public int Persistir(ServicoContratado servicoContratado, int idCelula, decimal?vlMarkup)
        {
            servicoContratado.Contrato = null;
            var mensagens = new ServicoContratadoValidator().Validate(servicoContratado).Errors;

            if (mensagens.Count > 0)
            {
                foreach (var mensagem in mensagens)
                {
                    _notificationHandler.AddMensagem(mensagem.PropertyName, mensagem.ErrorMessage);
                }
                return(0);
            }
            if (!servicoContratado.DeParaServicos.Any() || servicoContratado.DeParaServicos.Count == 0)
            {
                var idExistente = _servicoContratadoRepository.Validar(servicoContratado);
                if (idExistente != 0)
                {
                    _notificationHandler.AddMensagem("DUPLICIDADE", "PERSISTIR_SERVICO_CONTRATADO_DUPLICIDADE");
                    _notificationHandler.AddMensagem("ID", idExistente.ToString());
                    return(idExistente);
                }
            }

            if (servicoContratado.Id == 0)
            {
                if (!servicoContratado.DeParaServicos.Any() || servicoContratado.DeParaServicos.Count == 0)
                {
                    //PersistirServicoComercial(servicoContratado);
                    servicoContratado.DescTipoCelula = "TEC";
                }
                else
                {
                    _variables.UserName = "******";
                }
                servicoContratado.VinculoMarkupServicosContratados.Add(new VinculoMarkupServicoContratado
                {
                    DtInicioVigencia    = servicoContratado.DtInicial,
                    DtFimVigencia       = servicoContratado.DtFinal,
                    IdServicoContratado = servicoContratado.Id,
                    VlMarkup            = vlMarkup ?? 0,
                    //Usuario = _variables.GetUserName(),
                    //DataAlteracao = DateTime.Now
                });
                _servicoContratadoRepository.Adicionar(servicoContratado);
            }
            else
            {
                _servicoContratadoRepository.Update(servicoContratado);
            }
            _unitOfWork.Commit();
            return(servicoContratado.Id);
        }
 private static void CriarVinculoDePara(ServicoMigracaoDTO servicoMigradoDTO, ServicoContratado servicoContratado, string usuario)
 {
     foreach (var idServico in servicoMigradoDTO.IdsServicosAgrupados)
     {
         servicoContratado.DeParaServicos.Add(new DeParaServico
         {
             DescStatus       = "MA",
             DescTipoServico  = servicoMigradoDTO.IdTipoCelula == 1 ? "COM" : servicoMigradoDTO.IdTipoCelula == 3 ? "TEC" : "OUT",
             IdServicoEacesso = idServico,
             DataAlteracao    = DateTime.Now,
             Usuario          = usuario
         });
     }
 }
        public void PersistirServicoMigrado(ServicoMigracaoDTO servicoMigradoDTO)
        {
            ServicoContratado servicoContratado = CriarVinculoContrato(servicoMigradoDTO, _variables.UserName);

            CriarVinculoDePara(servicoMigradoDTO, servicoContratado, _variables.UserName);
            CriarVinculoMarkup(servicoMigradoDTO, servicoContratado, _variables.UserName);
            CriarVinculoCelulaComercial(servicoMigradoDTO, servicoContratado, _variables.UserName);

            PopularCamposServicoContratado(servicoMigradoDTO, servicoContratado);

            _servicoContratadoRepository.Adicionar(servicoContratado);
            _operacaoMigradaService.AtualizarStatus(servicoMigradoDTO.IdsServicosAgrupados);

            _unitOfWork.Commit();
        }
        private void PersistirServicoComercial(ServicoContratado servicoContratado)
        {
            var servicoComercial = (ServicoContratado)servicoContratado.Clone();

            servicoComercial.DescTipoCelula = "COM";
            var idServicoComercialExcluido = _servicoContratadoRepository.VerificarServicoContratadoComercialUnicoPorContrato(servicoContratado.IdContrato);

            servicoComercial.IdCelula = _servicoContratadoRepository.ObterCelulaComercialVigenteContrato(servicoContratado.IdContrato) ?? 0;
            if (idServicoComercialExcluido.HasValue)
            {
                var servicoParaRemovido = _servicoContratadoRepository.BuscarPorId(idServicoComercialExcluido.Value);
                _servicoContratadoRepository.Remover(servicoParaRemovido);
            }
            _servicoContratadoRepository.Adicionar(servicoComercial);
        }
        private ServicoContratado ViewServicoVmParaServicoContratado(ViewServicoModel src)
        {
            var dest = new ServicoContratado
            {
                DtFinal                   = src.DtFimVigencia ?? DateTime.Now,
                DtInicial                 = src.DtInicioVigencia,
                DescTipoCelula            = src.DescTipoCelula == "COMERCIAL" ? "COM" : "TEC",
                FlReembolso               = src.FlReembolso == 1 ? true : false,
                QtdExtraReembolso         = src.QtdExtraReembolso ?? 0,
                NmTipoReembolso           = src.NmTipoReembolso == 0 ? null : src.NmTipoReembolso == 1 ? "Nota de serviço" : "Nota de débito",
                FlHorasExtrasReembosaveis = src.FlHorasExtrasReembolsaveis == 1 ? true : false,
                VlRentabilidade           = src.VlRentabilidadePrevista,
                FlReoneracao              = src.FlReoneracao == 1 ? true : false,
                FlFaturaRecorrente        = src.FlFaturaRecorrente == 1 ? true : false,
                IdProdutoRM               = src.NrProdutoRM,
                FormaFaturamento          = src.DescFormaFaturamento
            };

            return(dest);
        }
        public int PersistirServicoEacesso(ServicoContratado servico, int idServicoEacesso, string nomeServico, int idCliente, decimal markup, string idContrato, string siglaTipoServico, string descEscopo, string siglaSubServico = null)
        {
            servico.EscopoServico = null;
            servico.DeParaServicos.Add(new DeParaServico
            {
                DescStatus         = "MA",
                DescTipoServico    = siglaTipoServico,
                NmServicoEacesso   = nomeServico,
                IdServicoEacesso   = idServicoEacesso,
                DescEscopo         = descEscopo,
                DescSubTipoServico = siglaSubServico,
                DataAlteracao      = DateTime.Now,
                Usuario            = "Eacesso"
            });
            idCliente          = ObterClienteEacessoPorId(idCliente);
            servico.IdContrato = _contratoService.VerificarExistenciaContratoEacesso(idContrato, idCliente);

            var idServicoPersistido = Persistir(servico, servico.IdCelula, markup);

            return(idServicoPersistido);
        }
        private Contrato CriarContrato(IDbConnection dbConnection, ServicoContratado servicoContratado)
        {
            Contrato contrato = new Contrato
            {
                DtInicial            = new DateTime(2019, 1, 1),
                DescContrato         = "Contrato Default",
                DescStatusSalesForce = "N/A",
                IdMoeda       = 1,
                DataAlteracao = DateTime.Now,
                Usuario       = "STFCORP"
            };

            //var clienteSTFCORP = BuscarClienteStfcorpPorIdEacesso(servicoContratado.IdCliente);
            //if (clienteSTFCORP != null)
            //{
            //    contrato.IdCliente = clienteSTFCORP.Id;
            //}
            //else
            //{
            //    var clienteEAcesso = BuscarClientePorIdEacesso(dbConnection, servicoContratado.IdCliente);
            //    ClienteET cliente = new ClienteET
            //    {
            //        Id = servicoContratado.IdCliente,
            //        NrCnpj = clienteEAcesso.NrCnpj,
            //        NmRazaoSocial = clienteEAcesso.NmRazaoSocial,
            //        IdSalesforce = clienteEAcesso.IdSalesforce,
            //        FlTipoHierarquia = "M",
            //        FlStatus = "P",
            //        Usuario = "STFCORP",
            //        DataAlteracao = DateTime.Now
            //    };
            //    contrato.IdCliente = cliente.Id;
            //    contrato.Cliente = cliente;
            //}

            return(contrato);
        }
 private static void CriarVinculoCelulaComercial(ServicoMigracaoDTO servicoMigradoDTO, ServicoContratado servicoContratado, string usuario)
 {
     foreach (var idServicoComercial in servicoMigradoDTO.CelulasServicosComerciaisAgrupados)
     {
         servicoContratado.VinculoServicoCelulaComercial.Add(new VinculoServicoCelulaComercial
         {
             DataInicial       = servicoMigradoDTO.DtInicioContrato.Value,
             IdCelulaComercial = idServicoComercial,
             DataAlteracao     = DateTime.Now,
             Usuario           = usuario
         });
     }
 }
 private static void PopularCamposServicoContratado(ServicoMigracaoDTO servicoMigradoDTO, ServicoContratado servicoContratado)
 {
     servicoContratado.DescricaoServicoContratado = servicoMigradoDTO.DescricaoServico;
     servicoContratado.IdEscopoServico            = servicoMigradoDTO.IdEscopo;
     servicoContratado.IdCelula                  = servicoMigradoDTO.IdCelula;
     servicoContratado.DescTipoCelula            = servicoMigradoDTO.IdTipoCelula == 1 ? "COM" : servicoMigradoDTO.IdTipoCelula == 3 ? "TEC" : "OUT";
     servicoContratado.DtInicial                 = servicoMigradoDTO.DtInicioContrato.Value;
     servicoContratado.DtFinal                   = servicoMigradoDTO.DtFimContrato;
     servicoContratado.FormaFaturamento          = servicoMigradoDTO.DescricaoFormaFaturamento;
     servicoContratado.VlRentabilidade           = servicoMigradoDTO.RentabilidadePrevista;
     servicoContratado.NmTipoReembolso           = servicoMigradoDTO.DescricaoTipoReembolso;
     servicoContratado.VlKM                      = servicoMigradoDTO.ValorKmRodado;
     servicoContratado.FlReembolso               = servicoMigradoDTO.IsDespesasReembolsaveis ?? false;
     servicoContratado.FlHorasExtrasReembosaveis = servicoMigradoDTO.IsHeReembolsaveis ?? false;
     servicoContratado.FlFaturaRecorrente        = servicoMigradoDTO.IsFaturaRecorrente ?? false;
     servicoContratado.FlReoneracao              = servicoMigradoDTO.IsReeoneracao ?? false;
     servicoContratado.IdEmpresa                 = servicoMigradoDTO.IdColigada;
     servicoContratado.IdFilial                  = servicoMigradoDTO.IdFilial;
     servicoContratado.IdProdutoRM               = servicoMigradoDTO.CodProdutoRm;
     servicoContratado.DataAlteracao             = DateTime.Now;
     servicoContratado.IdGrupoDelivery           = servicoMigradoDTO.IdGrupoDelivery;
     servicoContratado.IdFrenteNegocio           = servicoMigradoDTO.IdFrenteNegocio;
 }
 public void Criar(ServicoContratado servicoContratado)
 {
     _servicoContratadoRepository.Adicionar(servicoContratado);
     _unitOfWork.Commit();
 }
        private static void PopularDePara(int idServicoTecnico, int?idServicoComercial, ServicoContratado servicoContratado)
        {
            servicoContratado.DeParaServicos.Add(new DeParaServico
            {
                IdServicoEacesso = idServicoTecnico,
                DescStatus       = "MA",
                DescTipoServico  = ""
            });

            if (idServicoComercial.HasValue)
            {
                servicoContratado.DeParaServicos.Add(new DeParaServico
                {
                    IdServicoEacesso = idServicoComercial.Value,
                    DescStatus       = "MA",
                    DescTipoServico  = ""
                });
            }
        }
 private void PopularVinculoComercial(IDbConnection dbConnection, int idServicoComercial, ServicoContratado servicoContratado)
 {
     servicoContratado.VinculoServicoCelulaComercial.Add(new VinculoServicoCelulaComercial
     {
         IdCelulaComercial = ObterCelulaPorServico(dbConnection, idServicoComercial),
         DataInicial       = servicoContratado.DtInicial,
         DataFinal         = servicoContratado.DtFinal
     });
 }