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")); } }
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)); }