public ActionResult Index() { var fBuscaVM = (Session["fBuscaVM"] as FechamentoBuscaViewModel) ?? new FechamentoBuscaViewModel(); if (fBuscaVM != null) { FechamentoIndexViewModel resultsAnteriores = new FechamentoIndexViewModel(); resultsAnteriores.Busca = fBuscaVM; return(Index(resultsAnteriores)); } CarregaMesesAnos(); FechamentoIndexViewModel result = new FechamentoIndexViewModel(); var usuarios = db.Usuarios .Include(u => u.Funcionario) .ToList(); result.Usuarios.AddRange(usuarios); return(View(result)); }
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")); }