public OcorrenciaTipoViewModel EditarOcorrenciaTipo(OcorrenciaTipoViewModel view)
        {
            var ocorrenciaTipo =
                _ocorrenciaTipoServico.EditarOcorrenciaTipo(new OcorrenciaTipo(view.id, view.nome,
                                                                               view.OcorrenciasTiposPaiID, view.criadoPorUserID, view.nomeExibicao, view.vincularLocal, view.ativo,
                                                                               view.tempoPrevistoAtendimento));

            return(new OcorrenciaTipoViewModel(ocorrenciaTipo.Id, ocorrenciaTipo.Nome,
                                               ocorrenciaTipo.OcorrenciasTiposPaiId, ocorrenciaTipo.CriadoPorUserId, ocorrenciaTipo.NomeExibicao,
                                               ocorrenciaTipo.VincularLocal, ocorrenciaTipo.Ativo, ocorrenciaTipo.TempoPrevistoAtendimento,
                                               ocorrenciaTipo.AtrasadoAtendimento));
        }
        public OcorrenciaTipoViewModel MotivoOcorrenciaSelecionado(long ocorrenciaTipoId,
                                                                   bool carregarUltimoNivel = true)
        {
            var      ocorrenciaTipo       = _ocorrenciaTipoServico.ObterPorId(ocorrenciaTipoId);
            DateTime?previsaoInicial      = null;
            var      ocorrenciaTipoFilhos = _ocorrenciaTipoServico.ObterPor(ocorrenciaTipoId);

            var retorno = new OcorrenciaTipoViewModel
            {
                nomeExibicao                       = ocorrenciaTipo.NomeExibicao,
                vincularLocal                      = ocorrenciaTipo.VincularLocal,
                tempoPrevistoAtendimento           = ocorrenciaTipo.TempoPrevistoAtendimento,
                TempoPrevistoAtendimentoPorExtenso =
                    ocorrenciaTipo.TempoPrevistoDeAtendimentoPorExtenso(!ocorrenciaTipo.TempoPrevistoCorrido),
                DescricaoPadrao      = ocorrenciaTipo.TextoDescricaoPadrao,
                OcorrenciaTipoFilhos = new SelectList(ocorrenciaTipoFilhos, "id", "nome"),
                EhUltimoNivel        = ocorrenciaTipo.EhUltimoNivel
            };


            if (ocorrenciaTipo.EhUltimoNivel && carregarUltimoNivel)
            {
                previsaoInicial = _ocorrenciaTipoServico.CalcularDataSla((int)ocorrenciaTipo.Id, null);

                //var feriados = _feriadoServico.ObterTodos().Where(x => x.Uf == null || x.Uf == "SP" || x.Uf == "" || x.Uf == " ");

                //var listaDatasFeriado =
                //    feriados.Select(
                //            feriado =>
                //                new DateTime(feriado.Ano <= 0 ? DateTime.Now.Year : feriado.Ano, feriado.Mes, feriado.Dia))
                //        .ToList();

                //previsaoInicial = Metodos.CalcularSla(ocorrenciaTipo.TempoPrevistoAtendimento, listaDatasFeriado,
                //   !ocorrenciaTipo.TempoPrevistoCorrido);

                retorno.StatusEntidades =
                    new SelectList(_statusEntidadeServico.ObterPorOcorrenciaTipoId(ocorrenciaTipoId), "id", "nome");
                retorno.Previsao     = previsaoInicial.HasValue ? previsaoInicial.Value.ToString("dd/MM/yyyy HH:mm") : "";
                retorno.DataPrevisao = previsaoInicial;
                //retorno.TempoPrevistoAtendimentoPorExtenso = ocorrenciaTipo.TempoPrevistoPorExtenso(previsaoInicial, !ocorrenciaTipo.TempoPrevistoCorrido);
            }

            return(retorno);
        }
        public OcorrenciaTipoViewModel CarregarDadosOcorrenciaTipo(long id)
        {
            var listaOcorreciasTipoDDlViewModel = _ocorrenciaAppServico.CarregarOcorrenciaTipoGravadas(id);
            var ocorrenciaTipo = _ocorrenciaTipoServico.ObterPorId(id);

            var model = new OcorrenciaTipoViewModel
            {
                ListaOcorrenciaTipoDDLViewModel = listaOcorreciasTipoDDlViewModel,
                id   = ocorrenciaTipo.Id,
                nome = ocorrenciaTipo.Nome,
                OcorrenciasTiposPaiID = ocorrenciaTipo.OcorrenciasTiposPaiId,
                nomeExibicao          = ocorrenciaTipo.NomeExibicao,
                vincularLocal         = ocorrenciaTipo.VincularLocal,
                ativo = ocorrenciaTipo.Ativo,
                tempoPrevistoAtendimento = ocorrenciaTipo.TempoPrevistoAtendimento
            };

            return(model);
        }