public async Task <ActionResult> Edit([Bind(Include = "Id, IdUsuario, HorasPrevistasString, Fechado")] FechamentoViewModel referencia) { if (referencia.HorasPrevistasDouble < 0) { MensagemParaUsuarioViewModel.MensagemErro("Favor preencher as horas previstas", TempData, ModelState); } if (ModelState.IsValid) { try { var refe = db.Referencias.Find(referencia.Id); if (refe != null) { refe.Previsto = referencia.HorasPrevistasTimeSpan; refe.Fechado = referencia.Fechado; refe.SincronizaAtividades(new CalendarioServices()); await db.SaveChangesAsync(); MensagemParaUsuarioViewModel.MensagemSucesso("Alterações salvas.", TempData); return(View(referencia)); } else { MensagemParaUsuarioViewModel.MensagemErro("Não foi encontrada a referência deste mês para este funcionário", TempData, ModelState); } } catch (DbEntityValidationException ex) { string exceptionMessage = LogServices.ConcatenaErrosDbEntityValidation(ex); MensagemParaUsuarioViewModel.MensagemErro(exceptionMessage, TempData, ModelState); } catch (Exception err) { MensagemParaUsuarioViewModel.MensagemErro(err.Message, TempData, ModelState); } } return(View(referencia)); }
public async Task <ActionResult> DeleteConfirmed(int id) { try { var deletando = await db.Atestados.FindAsync(id); if (deletando != null) { List <Atividade> atts = new List <Atividade>(); atts.AddRange(deletando.Atividades); foreach (Atividade att in atts) { deletando.Atividades.Remove(att); db.Atividades.Remove(att); } deletando.Atividades.Clear(); db.Atestados.Remove(deletando); await db.SaveChangesAsync(); MensagemParaUsuarioViewModel.MensagemSucesso("Registro Excluido.", TempData); } else { MensagemParaUsuarioViewModel.MensagemErro("Registro não encontrado.", TempData); } } catch (DbEntityValidationException ex) { string exceptionMessage = LogServices.ConcatenaErrosDbEntityValidation(ex); MensagemParaUsuarioViewModel.MensagemErro(exceptionMessage, TempData, ModelState); } 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)); }
public ActionResult Index(FechamentoIndexViewModel model) { FechamentoBuscaViewModel fBuscaVM = model.Busca ?? (Session["fBuscaVM"] as FechamentoBuscaViewModel) ?? new FechamentoBuscaViewModel(); CarregaMesesAnos(); if (model == null || model.Busca == null) { MensagemParaUsuarioViewModel.MensagemAlerta("Preencher os dados do formulário corretamente. ", TempData); model = new FechamentoIndexViewModel(); model.Usuarios.AddRange(db.Usuarios.ToList()); Session["fBuscaVM"] = new FechamentoBuscaViewModel(); return(View(model)); } try { model.Usuarios.Clear(); model.Usuarios.AddRange(db.Usuarios.ToList()); DateTime dataInicial = new DateTime(model.Busca.AnoInicial ?? DateTime.Today.Year, model.Busca.MesInicial ?? DateTime.Today.Month, 1); DateTime dataFinal = (new DateTime(model.Busca.AnoFinal ?? DateTime.Today.Year, model.Busca.MesFinal ?? DateTime.Today.Month, 1)).AddMonths(1).AddSeconds(-1); var referencias = db.Referencias.Where(x => DbFunctions.CreateDateTime(x.Ano, x.Mes, 1, 0, 0, 0) >= dataInicial && DbFunctions.CreateDateTime(x.Ano, x.Mes, 1, 0, 0, 0) <= dataFinal); if (model.Busca.IdsUsuarios != null && model.Busca.IdsUsuarios.Length > 0) { referencias = referencias.Where(x => model.Busca.IdsUsuarios.Contains(x.Usuario.Id)); } model.Referencias.Clear(); model.Referencias.AddRange(referencias .OrderBy(r => r.Ano) .ThenBy(r => r.Mes) .ToList()); if (model.Acao == "Fechar") { var lista = model .Referencias .Where(x => x.Fechado == false) .OrderBy(r => r.Ano) .ThenBy(r => r.Mes) .ToList(); foreach (var r in lista) { r.SincronizaAtividades(new CalendarioServices()); r.Fechado = true; db.SaveChanges(); } if (lista.Count > 1) { MensagemParaUsuarioViewModel.MensagemSucesso(string.Format("{0} Referencias foram fechadas. ", lista.Count), TempData); } else if (lista.Count == 1) { MensagemParaUsuarioViewModel.MensagemSucesso("1 Referencia foi fechada. ", TempData); } else { MensagemParaUsuarioViewModel.MensagemAlerta("Não havia nada a ser fechado. ", TempData); } } else if (model.Acao == "Recalcular") { var lista = model .Referencias .OrderBy(r => r.Ano) .ThenBy(r => r.Mes) .ToList(); foreach (var r in lista) { //capturo o estado atual //bool fechadoAtual = r.Fechado; //forço reabertura e sincronizo //r.Fechado = false; r.SincronizaAtividades(new CalendarioServices()); //volto o estado anterior e salvo //r.Fechado = fechadoAtual; db.SaveChanges(); } if (lista.Count > 1) { MensagemParaUsuarioViewModel.MensagemSucesso(string.Format("{0} Referencias foram recalculadas. ", lista.Count), TempData); } else if (lista.Count == 1) { MensagemParaUsuarioViewModel.MensagemSucesso("1 Referencia foi recalculada. ", TempData); } else { MensagemParaUsuarioViewModel.MensagemAlerta("Não havia nada a ser recalculado. ", TempData); } } Session["fBuscaVM"] = model.Busca ?? new FechamentoBuscaViewModel(); return(View(model)); } catch (DbEntityValidationException ex) { string exceptionMessage = LogServices.ConcatenaErrosDbEntityValidation(ex); MensagemParaUsuarioViewModel.MensagemErro(exceptionMessage, TempData, ModelState); } catch (Exception err) { MensagemParaUsuarioViewModel.MensagemErro(err.Message, TempData, ModelState); } Session["fBuscaVM"] = model.Busca ?? new FechamentoBuscaViewModel(); return(RedirectToAction("Index")); }
/// <summary> /// posta os dados retirados da planilha e trabalhados no ImportacaoPlanilhaAtividadesViewModel /// </summary> /// <param name="planilha">ImportacaoPlanilhaAtividadesViewModel - viewmodel com os dados estruturados e editados para inserção no banco de dados</param> /// <returns>int - quantidade de atividades importadas</returns> public virtual async Task <int> LancarAsync(ImportacaoPlanilhaAtividadesViewModel planilha) { int result = 0; CalendarioServices cal = new CalendarioServices(); AtividadeApplication app = new AtividadeApplication(this._db); foreach (var i in planilha.Itens) { try { if ((i.Data != null) && (i.Data != DateTime.MinValue) && (cal.IsDiaUtil(i.Data))) { var projeto = await this._db.ProjectNodes.FindAsync(i.IdProjeto); var tipo = await this._db.TiposAtividade.FindAsync(i.IdTipoAtividade); if (planilha is ImportacaoPlanilhaAtividadesUsuarioViewModel) { i.IdUsuario = (planilha as ImportacaoPlanilhaAtividadesUsuarioViewModel).IdUsuario; } Usuario usuario = await this._db.Usuarios.FindAsync(i.IdUsuario); if (usuario == null) { throw new Exception("Usuário da planilha não preenchido"); } if (i.EntradaManha != null && i.SaidaManha != null && i.EntradaTarde != null && i.SaidaTarde != null) { if (i.EntradaManha > i.SaidaManha) { throw new Exception("A entrada do primeiro horário não pode ser maior que a saída do primeiro horário"); } if (i.EntradaTarde > i.SaidaTarde) { throw new Exception("A entrada do segundo horário não pode ser maior que a saída do segundo horário"); } if (i.EntradaManha > i.SaidaTarde) { throw new Exception("A entrada do primeiro horário não pode ser maior que a saída do segundo horário"); } if (i.SaidaManha > i.EntradaTarde) { throw new Exception("A saída do primeiro horário não pode ser maior que a entrada do segundo horário"); } } if ((i.EntradaManha != null) && (i.SaidaManha != null) && (i.SaidaManha > i.EntradaManha)) { await app.SalvarAsync(new Atividade { Observacao = i.Descricao, Inicio = i.Data.AddHours(i.EntradaManha.Value.Hours).AddMinutes(i.EntradaManha.Value.Minutes), Fim = i.Data.AddHours(i.SaidaManha.Value.Hours).AddMinutes(i.SaidaManha.Value.Minutes), ProjectNode = projeto, TipoAtividade = tipo, Usuario = usuario }, false); } if ((i.EntradaTarde != null) && (i.SaidaTarde != null) && (i.SaidaTarde > i.EntradaTarde)) { await app.SalvarAsync(new Atividade { Observacao = i.Descricao, Inicio = i.Data.AddHours(i.EntradaTarde.Value.Hours).AddMinutes(i.EntradaTarde.Value.Minutes), Fim = i.Data.AddHours(i.SaidaTarde.Value.Hours).AddMinutes(i.SaidaTarde.Value.Minutes), ProjectNode = projeto, TipoAtividade = tipo, Usuario = usuario }, false); } } } catch (DbEntityValidationException ex) { string exceptionMessage = LogServices.ConcatenaErrosDbEntityValidation(ex); throw new Exception("Problemas com a validação das entities: " + exceptionMessage, ex); } catch (Exception err) { LogServices.LogarException(err); throw new Exception("Erro: " + err.Message, err); } finally { result++; } } return(result); }
public async Task <ActionResult> Salvar(AbonoViewModel avm) { if (avm.IdsUsuarios == null || avm.IdsUsuarios.Count() == 0) { MensagemParaUsuarioViewModel.MensagemErro("Favor preencher a data inicial", TempData, ModelState, "IdsUsuarios"); } 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); while (data <= avm.DataFinal) { try { if (cal.IsDiaUtil(data)) { var projeto = db.ProjectNodes.Include(X => X.Pai).Where(x => x.Id == IDADMIN).SingleOrDefault(); var tipo = db.TiposAtividade.Where(x => x.Id == avm.IdTipoAtividade).SingleOrDefault(); var usuarios = await db.Usuarios .Include(x => x.Funcionario) .Where(u => avm.IdsUsuarios.Contains(u.Id)) .ToListAsync(); string nomesDosUsuarios = string.Join(", ", usuarios.Select(u => u.FuncionarioNomeOuLogin).ToList <string>().ToArray()); foreach (var u in usuarios) { if (tipo.Nome == ApplicationResources.TIPOATIVIDADE_FERIAS_NOME) { await app.SalvarAsync(new Atividade { Observacao = avm.Descricao, Inicio = data.AddHours(8), Fim = data.AddHours(12), ProjectNode = projeto, TipoAtividade = tipo, Usuario = u }, true); await app.SalvarAsync(new Atividade { Observacao = avm.Descricao, Inicio = data.AddHours(13), Fim = data.AddHours(17), ProjectNode = projeto, TipoAtividade = tipo, Usuario = u }, true); } else { await app.SalvarAsync(new Atividade { Observacao = avm.Descricao, Inicio = data, Fim = data.Add(avm.Horas.Value), ProjectNode = projeto, TipoAtividade = tipo, Usuario = u }, true); } } avm.NomeTipoAtividade = tipo.Nome; avm.NomeUsuario = nomesDosUsuarios; } } catch (DbEntityValidationException ex) { string exceptionMessage = LogServices.ConcatenaErrosDbEntityValidation(ex); MensagemParaUsuarioViewModel.MensagemErro(exceptionMessage, TempData, ModelState); return(PartialView("~/views/shared/EditorTemplates/AbonoViewModel.cshtml", avm)); } catch (Exception err) { MensagemParaUsuarioViewModel.MensagemErro(err.Message, TempData, ModelState); return(PartialView("~/views/shared/EditorTemplates/AbonoViewModel.cshtml", avm)); } finally { data = data.AddDays(1); } } MensagemParaUsuarioViewModel.MensagemSucesso("Atividades salvas.", TempData); return(PartialView("~/views/shared/DisplayTemplates/AbonoViewModel.cshtml", avm)); } return(PartialView("~/views/shared/EditorTemplates/AbonoViewModel.cshtml", avm)); }
public async Task <ActionResult> Edit([Bind(Include = "Id, Observacao, Data, Inicio, Fim, IdProjectNode, IdTipoAtividade, IdUsuario")] AtividadeViewModel atividadeVm) { if (atividadeVm.Data == DateTime.MinValue) { MensagemParaUsuarioViewModel.MensagemErro("Favor preencher a data", TempData, ModelState); } if ((atividadeVm.Inicio == null) || (atividadeVm.Inicio <= TimeSpan.Zero) || (atividadeVm.Inicio > new TimeSpan(23, 59, 59))) { MensagemParaUsuarioViewModel.MensagemErro("Favor preencher uma hora válida para o Início entre 00:00 e 23:59", TempData, ModelState); } if ((atividadeVm.Fim == null) || (atividadeVm.Fim <= TimeSpan.Zero) || (atividadeVm.Fim > new TimeSpan(23, 59, 59))) { MensagemParaUsuarioViewModel.MensagemErro("Favor preencher uma hora válida para o Fim entre 00:00 e 23:59", TempData, ModelState); } if (atividadeVm.Inicio > atividadeVm.Fim) { MensagemParaUsuarioViewModel.MensagemErro("A hora de início não pode ser maior que a hora de término", TempData, ModelState); } if (ModelState.IsValid) { try { var projeto = db.ProjectNodes.Find(atividadeVm.IdProjectNode); var tipo = db.TiposAtividade.Find(atividadeVm.IdTipoAtividade); var usuario = db.Usuarios.Find(atividadeVm.IdUsuario); Atividade domainAtv = db.Atividades.Find(atividadeVm.Id); domainAtv.Observacao = atividadeVm.Observacao; domainAtv.Inicio = atividadeVm.Data.AddHours(atividadeVm.Inicio.Hours).AddMinutes(atividadeVm.Inicio.Minutes); domainAtv.Fim = atividadeVm.Data.AddHours(atividadeVm.Fim.Hours).AddMinutes(atividadeVm.Fim.Minutes); domainAtv.ProjectNode = projeto; domainAtv.TipoAtividade = tipo; domainAtv.Usuario = usuario; AtividadeApplication app = new AtividadeApplication(this.db); await app.SalvarAsync(domainAtv, true); MensagemParaUsuarioViewModel.MensagemSucesso("Atividade salva.", TempData); return(RedirectToAction("Edit", atividadeVm)); } catch (DbEntityValidationException ex) { string exceptionMessage = LogServices.ConcatenaErrosDbEntityValidation(ex); MensagemParaUsuarioViewModel.MensagemErro(exceptionMessage, TempData, ModelState); } catch (Exception err) { MensagemParaUsuarioViewModel.MensagemErro(err.Message, TempData, ModelState); } } CarregaTipos(); CarregaProjetos(); CarregaUsuarios(); return(View(atividadeVm)); }
public async Task <ActionResult> Lancar(LancamentoEmLoteModel lctos) { if (lctos.IdsUsuarios == null || lctos.IdsUsuarios.Count() == 0) { MensagemParaUsuarioViewModel.MensagemErro("Escolha pelo menos um usuário", TempData, ModelState, "IdsUsuarios"); } if (lctos.DataInicial == DateTime.MinValue) { MensagemParaUsuarioViewModel.MensagemErro("Favor preencher a data inicial", TempData, ModelState, "DataInicial"); } if (lctos.DataFinal == DateTime.MinValue) { MensagemParaUsuarioViewModel.MensagemErro("Favor preencher a data final", TempData, ModelState, "DataFinal"); } if (lctos.DataFinal < lctos.DataInicial) { MensagemParaUsuarioViewModel.MensagemErro("A data final deve ser maior ou igual a data inicial", TempData, ModelState, "DataFinal"); } if ((lctos.DataFinal - lctos.DataInicial).TotalDays > 365) { MensagemParaUsuarioViewModel.MensagemErro("Não é permitido um lançamento em lote maior que um ano", TempData, ModelState, "DataFinal"); } if ((lctos.EntradaManha == null) || (lctos.EntradaManha <= TimeSpan.Zero) || (lctos.EntradaManha > new TimeSpan(23, 59, 59))) { MensagemParaUsuarioViewModel.MensagemErro("Favor preencher uma hora válida para a entrada da manhã entre 00:00 e 23:59", TempData, ModelState, "EntradaManha"); } if ((lctos.SaidaManha == null) || (lctos.SaidaManha <= TimeSpan.Zero) || (lctos.SaidaManha > new TimeSpan(23, 59, 59))) { MensagemParaUsuarioViewModel.MensagemErro("Favor preencher uma hora válida para a saída da manhã entre 00:00 e 23:59", TempData, ModelState, "SaidaManha"); } if ((lctos.EntradaTarde == null) || (lctos.EntradaTarde <= TimeSpan.Zero) || (lctos.EntradaTarde > new TimeSpan(23, 59, 59))) { MensagemParaUsuarioViewModel.MensagemErro("Favor preencher uma hora válida para a entrada da tarde entre 00:00 e 23:59", TempData, ModelState, "EntradaTarde"); } if ((lctos.SaidaTarde == null) || (lctos.SaidaTarde <= TimeSpan.Zero) || (lctos.SaidaTarde > new TimeSpan(23, 59, 59))) { MensagemParaUsuarioViewModel.MensagemErro("Favor preencher uma hora válida para a saída da tarde entre 00:00 e 23:59", TempData, ModelState, "SaidaTarde"); } if (lctos.EntradaManha > lctos.SaidaManha) { MensagemParaUsuarioViewModel.MensagemErro("A hora de início não pode ser maior que a hora de término no primeiro horário", TempData, ModelState, "EntradaManha"); } if (lctos.EntradaTarde > lctos.SaidaTarde) { MensagemParaUsuarioViewModel.MensagemErro("A hora de início não pode ser maior que a hora de término no segundo horário", TempData, ModelState, "EntradaTarde"); } if (lctos.EntradaManha > lctos.SaidaTarde) { MensagemParaUsuarioViewModel.MensagemErro("A primeira hora de início não pode ser maior que última hora de término", TempData, ModelState, "EntradaManha"); } if (lctos.SaidaManha > lctos.EntradaTarde) { MensagemParaUsuarioViewModel.MensagemErro("A saída do primeiro horário não pode ser maior que a entrada do segundo horário", TempData, ModelState, "SaidaManha"); } if (ModelState.IsValid) { CalendarioServices cal = new CalendarioServices(); AtividadeApplication app = new AtividadeApplication(this.db); DateTime data = lctos.DataInicial; var projeto = await db.ProjectNodes.FindAsync(lctos.IdProjeto); var tipo = await db.TiposAtividade.FindAsync(lctos.IdTipoAtividade); var usuarios = await db.Usuarios.Where(u => lctos.IdsUsuarios.Contains(u.Id)).ToListAsync <Usuario>(); while (data <= lctos.DataFinal) { try { if (cal.IsDiaUtil(data)) { foreach (Usuario usu in usuarios) { await app.SalvarAsync(new Atividade { Observacao = lctos.Descricao, Inicio = data.AddHours(lctos.EntradaManha.Hours).AddMinutes(lctos.EntradaManha.Minutes), Fim = data.AddHours(lctos.SaidaManha.Hours).AddMinutes(lctos.SaidaManha.Minutes), ProjectNode = projeto, TipoAtividade = tipo, Usuario = usu }, true); await app.SalvarAsync(new Atividade { Observacao = lctos.Descricao, Inicio = data.AddHours(lctos.EntradaTarde.Hours).AddMinutes(lctos.EntradaTarde.Minutes), Fim = data.AddHours(lctos.SaidaTarde.Hours).AddMinutes(lctos.SaidaTarde.Minutes), ProjectNode = projeto, TipoAtividade = tipo, Usuario = usu }, true); } } } catch (DbEntityValidationException ex) { string exceptionMessage = LogServices.ConcatenaErrosDbEntityValidation(ex); MensagemParaUsuarioViewModel.MensagemErro(exceptionMessage, TempData, ModelState); return(RedirectToAction("Index")); } catch (Exception err) { MensagemParaUsuarioViewModel.MensagemErro(err.Message, TempData, ModelState); return(RedirectToAction("Index")); } finally { data = data.AddDays(1); } } MensagemParaUsuarioViewModel.MensagemSucesso("Atividades salvas.", TempData); } CarregaTipos(); CarregaProjetos(); CarregaUsuarios(); return(View(lctos)); }
public async Task <ActionResult> CreateAjax([Bind(Include = "Observacao,Data,Inicio,Fim, IdProjectNode, IdTipoAtividade")] AtividadeAjaxViewModel atividadeVm) { if (atividadeVm.Data == DateTime.MinValue) { MensagemParaUsuarioViewModel.MensagemErro("Favor preencher a data", TempData, ModelState); } if ((atividadeVm.Inicio == null) || (atividadeVm.Inicio <= TimeSpan.Zero) || (atividadeVm.Inicio > new TimeSpan(23, 59, 59))) { MensagemParaUsuarioViewModel.MensagemErro("Favor preencher uma hora válida para o Início entre 00:00 e 23:59", TempData, ModelState); } if ((atividadeVm.Fim == null) || (atividadeVm.Fim <= TimeSpan.Zero) || (atividadeVm.Fim > new TimeSpan(23, 59, 59))) { MensagemParaUsuarioViewModel.MensagemErro("Favor preencher uma hora válida para o Fim entre 00:00 e 23:59", TempData, ModelState); } if (atividadeVm.Inicio > atividadeVm.Fim) { MensagemParaUsuarioViewModel.MensagemErro("A hora de início não pode ser maior que a hora de término", TempData, ModelState); } if (ModelState.IsValid) { var usuario = db.Usuarios.Where <Usuario>(x => x.Login == User.Identity.Name).FirstOrDefault(); if (usuario != null) { try { var projeto = await db.ProjectNodes.FindAsync(atividadeVm.IdProjectNode); var tipo = await db.TiposAtividade.FindAsync(atividadeVm.IdTipoAtividade); Atividade domainAtv = new Atividade { Observacao = atividadeVm.Observacao, Inicio = atividadeVm.Data.AddHours(atividadeVm.Inicio.Hours).AddMinutes(atividadeVm.Inicio.Minutes), Fim = atividadeVm.Data.AddHours(atividadeVm.Fim.Hours).AddMinutes(atividadeVm.Fim.Minutes), ProjectNode = projeto, TipoAtividade = tipo, Usuario = usuario }; Referencia refe = domainAtv.Usuario.GetReferencia(domainAtv.Inicio.Year, domainAtv.Inicio.Month); if (!refe.Fechado) { AtividadeApplication app = new AtividadeApplication(this.db); await app.SalvarAsync(domainAtv, false); MensagemParaUsuarioViewModel.MensagemSucesso("Atividade salva.", TempData); return(PartialView("~/views/shared/DisplayTemplates/AtividadeAjaxViewModel.cshtml", domainAtv)); } else { MensagemParaUsuarioViewModel.MensagemAlerta("Você não pode criar uma atividade para um mês que já foi fechado.", TempData); } } catch (DbEntityValidationException ex) { string exceptionMessage = LogServices.ConcatenaErrosDbEntityValidation(ex); MensagemParaUsuarioViewModel.MensagemErro(exceptionMessage, TempData, ModelState); } catch (Exception err) { MensagemParaUsuarioViewModel.MensagemErro(err.Message, TempData, ModelState); } } else { ModelState.AddModelError("Usuario", "Usuário logado não encontrado!."); MensagemParaUsuarioViewModel.MensagemErro("Usuário logado não encontrado!.", TempData); } } CarregaTipos(); CarregaProjetos(); return(PartialView("~/views/shared/EditorTemplates/AtividadeAjaxViewModel.cshtml", atividadeVm)); }