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(); }
//[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(); }
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 */ } }