Ejemplo n.º 1
0
        public async Task <ActionResult> Delete(int?id)
        {
            if (id == null || id == 0)
            {
                MensagemParaUsuarioViewModel.MensagemErro("Não foi especificado um item para excluir", TempData, ModelState);
                return(RedirectToAction("index"));
            }

            try
            {
                AtestadoAnexo atestado = await db.Atestados.FindAsync(id);

                if (atestado == null)
                {
                    MensagemParaUsuarioViewModel.MensagemErro("O item não foi encontrado", TempData, ModelState);
                    return(RedirectToAction("index"));
                }

                var model = new AtestadoIndexViewModel
                {
                    Id                     = atestado.Id,
                    NomeUsuario            = atestado.Atividades.FirstOrDefault().Usuario.FuncionarioNomeOuLogin,
                    Observacao             = atestado.Observacao,
                    QuantidadeDeAtividades = atestado.Atividades.Count,
                    DataInicial            = atestado.Atividades.Min(x => x.Inicio),
                    DataFinal              = atestado.Atividades.Max(x => x.Fim),
                };

                return(View(model));
            }
            catch (Exception err)
            {
                MensagemParaUsuarioViewModel.MensagemErro(err.Message, TempData, ModelState);
                return(RedirectToAction("index"));
            }
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> Adicionar(AtestadoAnexoViewModel avm)
        {
            if (avm.IdUsuario == 0)
            {
                MensagemParaUsuarioViewModel.MensagemErro("Favor preencher a data inicial", TempData, ModelState, "IdUsuario");
            }

            if (avm.Horas == null || avm.Horas == TimeSpan.Zero || avm.Horas.Value.TotalHours > 8)
            {
                MensagemParaUsuarioViewModel.MensagemErro("Por favor preencha corretamente a quantidade de horas abonadas. Ela não pode ser maior que 8. ", TempData, ModelState, "Horas");
            }

            if (avm.DataInicial == DateTime.MinValue)
            {
                MensagemParaUsuarioViewModel.MensagemErro("Favor preencher a data inicial", TempData, ModelState, "DataInicial");
            }

            if (avm.DataFinal < avm.DataInicial)
            {
                MensagemParaUsuarioViewModel.MensagemErro("A data final deve ser maior ou igual a data inicial", TempData, ModelState, "DataFinal");
            }

            if (avm.DataFinal == null || avm.DataFinal.Value == DateTime.MinValue)
            {
                avm.DataFinal = avm.DataInicial;
            }

            if ((avm.DataFinal.Value - avm.DataInicial).TotalDays > 365)
            {
                MensagemParaUsuarioViewModel.MensagemErro("Não é permitido um lançamento em lote maior que um ano", TempData, ModelState, "DataFinal");
            }


            if (ModelState.IsValid)
            {
                CalendarioServices   cal = new CalendarioServices();
                AtividadeApplication app = new AtividadeApplication(this.db);

                DateTime data       = avm.DataInicial.Date;
                int      IDADMIN    = TFW.TFWConvert.ToInteger(ApplicationResources.PROJECTNODE_ADMINISTRATIVO_ID);
                int      IDATESTADO = TFW.TFWConvert.ToInteger(ApplicationResources.TIPOATIVIDADE_ATESTADO_ID);

                var projeto = db.ProjectNodes.Include(X => X.Pai).Where(x => x.Id == IDADMIN).SingleOrDefault();
                var tipo    = db.TiposAtividade.Find(IDATESTADO);
                var usuario = await db.Usuarios.FindAsync(avm.IdUsuario);

                avm.NomeUsuario = usuario.FuncionarioNomeOuLogin;



                AtestadoAnexo atestado = new AtestadoAnexo();
                atestado.Atividades = new List <Atividade>();
                atestado.Observacao = avm.Observacao;
                byte[] fileData = null;
                using (var binaryReader = new BinaryReader(avm.ArquivoAnexo.InputStream))
                {
                    fileData = binaryReader.ReadBytes(Request.Files[0].ContentLength);
                }
                atestado.Arquivo             = fileData;
                atestado.NomeArquivoOriginal = avm.ArquivoAnexo.FileName;
                db.Atestados.Add(atestado);


                while (data <= avm.DataFinal)
                {
                    try
                    {
                        if (cal.IsDiaUtil(data))
                        {
                            Atividade atv = new Atividade
                            {
                                Observacao    = avm.Observacao,
                                Inicio        = data,
                                Fim           = data.Add(avm.Horas.Value),
                                ProjectNode   = projeto,
                                TipoAtividade = tipo,
                                Usuario       = usuario
                            };

                            await app.SalvarAsync(atv, true);

                            atestado.Atividades.Add(atv);
                        }
                    }
                    catch (DbEntityValidationException ex)
                    {
                        string exceptionMessage = LogServices.ConcatenaErrosDbEntityValidation(ex);
                        MensagemParaUsuarioViewModel.MensagemErro(exceptionMessage, TempData, ModelState);
                        return(View(avm));
                    }
                    catch (Exception err)
                    {
                        MensagemParaUsuarioViewModel.MensagemErro(err.Message, TempData, ModelState);
                        return(View(avm));
                    }
                    finally
                    {
                        data = data.AddDays(1);
                    }

                    await db.SaveChangesAsync();
                }

                MensagemParaUsuarioViewModel.MensagemSucesso("Atestado salvo e abonos lançados.", TempData);
                return(View(avm));
            }



            return(View(avm));
        }