Example #1
0
        public async Task <IActionResult> Index()
        {
            //var cidades = await _context.Cidade.OrderBy(p => p.nome).ToListAsync();
            var cidades = await _context.Subsede.OrderBy(p => p.nome).Select(p => new cidade()
            {
                estado   = p.idcidadeNavigation.estado,
                idcidade = p.idcidadeNavigation.idcidade,
                nome     = p.nome + " (" + p.idcidadeNavigation.nome + ")"
            }).ToListAsync();

            //var t = from s in _context.Subsede select new cidade { };
            //var geral = cidades.Single(p => p.idcidade == 0);
            //cidades.Remove(geral);
            //cidades.Insert(0, geral);
            ViewData["cidade"] = new SelectList(cidades, "idcidade", "nome");

            calendario cal = new calendario();

            cal.datainicial = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);

            //cal.datafinal = cal.datainicial.AddMonths(1);
            cal.cargahoraria = 0;
            cal.semanateoria = 1;
            cal.idcidade     = cidades.First().idcidade;

            return(View(UpdateCalendario(cal)));
        }
        static void Main(string[] args)
        {
            calendario     fechas = new calendario(0, "", 0);
            CalendarioHAAB haab   = new CalendarioHAAB(0, "", 0);

            Console.WriteLine(haab.convertir());
            Console.ReadKey();
        }
Example #3
0
        //[ValidateAntiForgeryToken]
        public async Task <IActionResult> GetCalendario(calendario cal)
        {
            return(await Task.FromResult(Json(UpdateCalendario(cal))));

            //cal.idcidadeNavigation = await _context.Cidade.Include(p=>p.feriados).SingleAsync(p => p.idcidade == cal.idcidade);
            //pegar somente os valores do intervalo ?

            /*cal.feriados = await _context.Feriado.Where(p => p.idcidade == cal.idcidade || p.idcidade == 0).Select(p => p.dia).Distinct().ToListAsync();
             * cal.teoricas = new List<DateTime>();
             * cal.praticas = new List<DateTime>();
             * foreach (DateTime day in EachDay(cal.datainicial, cal.datafinal))
             * {
             *  //check , sabado domingo,feriado
             *  if (day.DayOfWeek!= DayOfWeek.Saturday && day.DayOfWeek != DayOfWeek.Sunday && !cal.feriados.Any(p => p == day) )
             *  {
             *      //check se o dia é da teorica
             *      if ((int)day.DayOfWeek == cal.semanateoria)
             *      {
             *          cal.teoricas.Add(day);
             *      }
             *      else
             *      {
             *          cal.praticas.Add(day);
             *      }
             *  }
             * }
             * cal.extras?.ToList().ForEach(p => {
             *  foreach (DateTime day in EachDay(p.datainicial, p.datafinal))
             *  {
             *
             *      //check , sabado domingo,feriado
             *      if (day.DayOfWeek != DayOfWeek.Saturday && day.DayOfWeek != DayOfWeek.Sunday && !cal.feriados.Any(pp => pp == day))
             *      {
             *          cal.teoricas.Add(day);
             *      }
             *
             *  }
             * });
             * return Json(cal);*/
        }
 public CalendarioController(calendario vista)
 {
     _vista      = vista;
     _calendario = new modelo.calendario();
 }
Example #5
0
        private calendario UpdateCalendario(calendario cal)
        {
            cal.log = new List <dynamic>();


            /*
             * 0- 20/17 - 1280 - 400/880
             * 1- 20/24 - 1840 - 552/1288
             * 2- 30/11 - 1280 - 400/880
             * 3- 30/15 - 1840 - 552/1288
             */
            int horaspraticas = 0;
            int horasteoricas = 0;
            //int horaspraticastotal = 0;
            //int horasteoricastotal = 0;
            int horadia = (cal.cargahoraria == 0 || cal.cargahoraria == 1) ?4:6;

            switch (cal.cargahoraria)
            {
            case 0:
            case 2:
                cal.cargateorica = 400;
                cal.cargapratica = 880;
                // horaspraticastotal = 880;
                //horasteoricastotal = 400;
                break;

            case 1:
            case 3:
                //horaspraticastotal = 1288;
                //horasteoricastotal = 552;
                cal.cargateorica = 552;
                cal.cargapratica = 1288;
                break;
            }

            cal.feriados      = _context.Feriado.Where(p => p.idcidade == cal.idcidade || p.idcidade == 0).Select(p => p.dia).Distinct().ToList();
            cal.recessos      = new List <recesso>();
            cal.teoricas      = new List <DateTime>();
            cal.praticas      = new List <DateTime>();
            cal.recessosgerar = new List <DateTime>();

            cal.feriasdias = new List <DateTime>();
            cal.ferias?.ToList().ForEach(p => cal.feriasdias.AddRange(EachDay(p.datainicial, p.datafinal)));

            cal.suspensaodias = new List <DateTime>();
            cal.suspensao?.ToList().ForEach(p => cal.suspensaodias.AddRange(EachDay(p.datainicial, p.datafinal)));

            cal.reducaodias = new List <DateTime>();
            cal.reducao?.Where(p => p.datainicial.Year > 2000).ToList().ForEach(p => cal.reducaodias.AddRange(EachDay(p.datainicial, p.datafinal)));

            var extrasdias = new List <DateTime>();

            cal.extras?.ToList().ForEach(p => extrasdias.AddRange(EachDay(p.datainicial, p.datafinal)));
            var iniciaisdias = new List <DateTime>();

            cal.iniciais?.ToList().ForEach(p => iniciaisdias.AddRange(EachDay(p.datainicial, p.datafinal)));

            var manuaisteorica = new List <DateTime>();

            cal.manuaisteorica?.ToList().ForEach(p => manuaisteorica.AddRange(EachDay(p.datainicial, p.datafinal)));

            var manuaispratica = new List <DateTime>();

            cal.manuaispratica?.ToList().ForEach(p => manuaispratica.AddRange(EachDay(p.datainicial, p.datafinal)));

            var estabilidadepraticas = new List <DateTime>();

            cal.estabilidadepraticas?.ToList().ForEach(p => estabilidadepraticas.AddRange(EachDay(p.datainicial, p.datafinal)));

            var estabilidadeteoricas = new List <DateTime>();

            cal.estabilidadeteoricas?.ToList().ForEach(p => estabilidadeteoricas.AddRange(EachDay(p.datainicial, p.datafinal)));

            var recessos      = _context.Recesso.Where(p => p.tipo != (int)recessoTipo.Recesso_Gerar_Regular && (p.idcidade == cal.idcidade || p.idcidade == 0)).ToList();
            var recessosGerar = _context.Recesso.Where(p => p.tipo == (int)recessoTipo.Recesso_Gerar_Regular && (p.idcidade == cal.idcidade || p.idcidade == 0)).ToList();

            var recessosGerarIniciais = _context.Recesso.Where(p => p.tipo == (int)recessoTipo.Recesso_Gerar_Inicial && (p.idcidade == cal.idcidade || p.idcidade == 0)).ToList();
            var recessosGerarExtra    = _context.Recesso.Where(p => p.tipo == (int)recessoTipo.Recesso_Gerar_Extra && (p.idcidade == cal.idcidade || p.idcidade == 0)).ToList();



            var day = cal.datainicial;

            /*dia fixo*/
            if (cal.datafixa && cal.reducaoper > 0)
            {//
             // cal.cargateorica = cal.cargateorica - (cal.reducaodias.Count * horadia);
            }
            /**/
            //cal.feriasdias = feriasdias;
            while (true) // trocar por for quando estiver pronto
            {
                dynamic logday = new System.Dynamic.ExpandoObject();
                cal.log.Add(logday);
                logday.day = day.ToString("dd/MM/yyyy");


                //checar se é suspensao !!!
                if (cal.suspensaodias.Any(p => p == day))
                {
                    logday.tipo = "suspensao";
                }
                else

                //checar se é ferias !!!
                if (cal.feriasdias.Any(p => p == day))
                {
                    logday.tipo = "ferias";
                }
                else
                //check , sabado domingo,feriado
                if (day.DayOfWeek != DayOfWeek.Saturday && day.DayOfWeek != DayOfWeek.Sunday && !cal.feriados.Any(p => p == day))//
                {
                    // dia 01/03/19  raphael mudou ordem para  inicial, extra, regular para o gerar
                    if (recessosGerarIniciais.Any(p => p.dia == day) && iniciaisdias.Any(p => p == day))    //recessosGerarIniciais
                    {
                        if (horaspraticas < cal.cargapratica)
                        {
                            cal.recessosgerar.Add(day);
                            horaspraticas += horadia; logday.tipo = "recessosGerarIniciais";
                        }
                    }
                    else
                    if (recessosGerarExtra.Any(p => p.dia == day) && extrasdias.Any(p => p == day))    //recessosGerarExtra
                    {
                        if (horaspraticas < cal.cargapratica)
                        {
                            cal.recessosgerar.Add(day);
                            horaspraticas += horadia; logday.tipo = "recessosGerarExtra";
                        }
                    }
                    else
                    if (recessosGerar.Any(p => p.dia == day) && !iniciaisdias.Any(p => p == day) && !extrasdias.Any(p => p == day))     /*recessos gerar regular em dias não extra e iniciais */
                    {
                        if (horaspraticas < cal.cargapratica)
                        {
                            cal.recessosgerar.Add(day);
                            horaspraticas += horadia; logday.tipo = "recessos gerar regular em dias não extra e iniciais";
                        }
                        else
                        {
                            cal.recessosgerar.Add(day);         /* ficou errado isso mas o raphael pediu assim */
                        }
                    }