public JsonResult GetDispositivoMinimoByQuartel(Guid quartelId, bool periodoDiurno, DateTime calendarDate)
        {
            var events = new List <EventViewModel>();
            //var viaturaTipoFuncoes = _viaturaTipoFuncaoStore.GetByQuartelId(new Guid("64d91ea9-2252-4731-9ed8-762937ca140a"));
            var viaturaTipoFuncoes = _viaturaTipoFuncaoStore.GetByQuartelId(quartelId);

            List <QuantidadeFuncaoViewModel> result = viaturaTipoFuncoes
                                                      .GroupBy(l => l.FuncaoId)
                                                      .Select(x => new QuantidadeFuncaoViewModel
            {
                FuncaoId   = x.First().FuncaoId,
                FuncaoNome = x.First().Funcao.Nome,
                Quantidade = x.Sum(c => c.Quantidade),
            }).ToList();

            DateTime firstDay = new DateTime(calendarDate.Year, calendarDate.Month, 1);
            DateTime lastDay  = new DateTime(calendarDate.Year, calendarDate.Month, DateTime.DaysInMonth(calendarDate.Year, calendarDate.Month));

            var escalasPeriodo = _escalaStore.GetByQuartelIdAndMonthYearAndPeriodoDiurno(quartelId, calendarDate.Month, calendarDate.Year, periodoDiurno).ToList();

            escalasPeriodo = escalasPeriodo.Where(x => x.EscalaTipoId == Guid.Empty).ToList();


            for (DateTime dt = firstDay; dt <= lastDay; dt = dt.AddDays(1))
            {
                foreach (var funcao in result)
                {
                    //var qtdeFuncao = _escalaStore.GetQuantityToDispositivoMinimo(quartelId, funcao.FuncaoId, dt, periodoDiurno);
                    var qtdeFuncao = escalasPeriodo.Count(x =>
                                                          x.FuncaoId == funcao.FuncaoId &&
                                                          x.DtEscala == dt &&
                                                          x.PeriodoDiurno == periodoDiurno
                                                          );

                    var className = "event-ok";
                    if (((funcao.Quantidade * -1) + qtdeFuncao) > 0)
                    {
                        className = "event-positive";
                    }

                    if ((funcao.Quantidade * -1) + qtdeFuncao < 0)
                    {
                        className = "event-negative";
                    }

                    events.Add(new EventViewModel()
                    {
                        id        = new Guid(),
                        title     = funcao.FuncaoNome.PadRight(10).Substring(0, 5) + "  " + ((funcao.Quantidade * -1) + qtdeFuncao),
                        start     = dt,
                        className = className
                    });
                }
            }
            return(Json(events.ToArray()));
        }
        public ActionResult QuartelMapa()
        {
            var quarteis          = _quartelStore.GetAll();
            var quarteisViewModel = new List <QuartelViewModel>();

            foreach (var quartel in quarteis)
            {
                var quartelViewModel = new QuartelViewModel();
                quartelViewModel.Quartel = _quartelStore.GetById(quartel.Id);

                var viaturaTipoFuncoes = _viaturaTipoFuncaoStore.GetByQuartelId(quartel.Id);
                quartelViewModel.QuantidadeFuncoesViewModel = viaturaTipoFuncoes
                                                              .GroupBy(l => l.FuncaoId)
                                                              .Select(x => new QuantidadeFuncaoViewModel
                {
                    FuncaoId   = x.First().FuncaoId,
                    FuncaoNome = x.First().Funcao.Nome,
                    Quantidade = x.Sum(c => c.Quantidade),
                }).ToList();

                var quartelViatura = new QuartelViaturaViewModel();
                quartelViatura.QuartelViaturas = _quartelViaturaStore.GetByQuartelId(quartel.Id).ToList();
                //quartelViatura.Viaturas = _viaturaStore.GetAll().ToList();
                quartelViewModel.QuartelViaturaViewModel = quartelViatura;
                quartelViewModel.Bombeiros = _bombeiroStore.GetByQuartelId(quartel.Id);
                quarteisViewModel.Add(quartelViewModel);
            }

            var batalhoes  = _batalhaoStore.GetAll();
            var companhias = _companhiaStore.GetAll();

            quarteisViewModel.ForEach(q => q.Quartel.Companhia          = companhias.FirstOrDefault(c => c.Id == q.Quartel.CompanhiaId));
            quarteisViewModel.ForEach(q => q.Quartel.Companhia.Batalhao = batalhoes.FirstOrDefault(b => b.Id == q.Quartel.Companhia.BatalhaoId));

            return(View(quarteisViewModel));
        }