Esempio n. 1
0
        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"));
        }
Esempio n. 2
0
 /// <summary>
 /// constructor padrão
 /// </summary>
 public FechamentoIndexViewModel()
 {
     Usuarios    = new List <Usuario>();
     Busca       = new FechamentoBuscaViewModel();
     Referencias = new List <Referencia>();
 }