/// <summary> /// Inserción de datos de repetitivas /// </summary> /// <param name="loopTaskSchedule"></param> private void InsertAssignmentForThisWeek(LoopTaskSchedule loopTaskSchedule) { int? selectedDayOfWeek = loopTaskSchedule.DayOfWeek; int? dayOfMonth = loopTaskSchedule.DayOfMonth; int? idMonth = loopTaskSchedule.IdMonth; int? numberOfWeek = loopTaskSchedule.NumberOfWeek; DateTime now = DateTime.Now; DateTime startTime = (DateTime)loopTaskSchedule.LoopTask.StartTime; DateTime endTime = loopTaskSchedule.LoopTask.EndTime; int actualDayOfWeek = DateTime.Today.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)DateTime.Today.DayOfWeek; if (idMonth == 13 || MonthBelongsToActualWeek(idMonth)) { if (dayOfMonth == null) { if ((numberOfWeek == null || numberOfWeek == GetWeekNumberOfMonth(now)) && selectedDayOfWeek > actualDayOfWeek || (selectedDayOfWeek == actualDayOfWeek && TimeSpan.Compare(startTime.TimeOfDay, now.TimeOfDay) > 0)) { int differenceBetweenDays = ((int)selectedDayOfWeek) - actualDayOfWeek; CreateProcessedTask(loopTaskSchedule, startTime, endTime, differenceBetweenDays); } } else { DateTime firstDayOfWeek = DateTime.Now.StartOfWeek(DayOfWeek.Monday); DateTime lastDayOfWeek = firstDayOfWeek.AddDays(6); int day = (int)dayOfMonth; DateTime wishedDay = new DateTime(); if (firstDayOfWeek.Month == lastDayOfWeek.Month) { try { wishedDay = new DateTime(now.Year, now.Month, day); } catch (Exception e) { } } else if ((firstDayOfWeek.Month < lastDayOfWeek.Month) || (firstDayOfWeek.Month > lastDayOfWeek.Month && firstDayOfWeek.Year != lastDayOfWeek.Year)) { try { if (day > firstDayOfWeek.Day) { wishedDay = new DateTime(now.Year, firstDayOfWeek.Month, day); } else if (day <= lastDayOfWeek.Day) { wishedDay = new DateTime(now.Year, lastDayOfWeek.Month, day); } } catch (Exception e) { } } if (wishedDay >= firstDayOfWeek && wishedDay <= lastDayOfWeek) { DateTime startDate = wishedDay.Date + startTime.TimeOfDay; DateTime endDate = wishedDay.Date + endTime.TimeOfDay; CreateProcessedTask(loopTaskSchedule, startDate, endDate); } } } }
private bool CreateProcessedTask(LoopTaskSchedule loopTaskSchedule, DateTime startDate, DateTime endDate) { int assignedStatusId = 1; ProcessedTask processedTask = new ProcessedTask() { Commentary = null, AssignationDate = DateTime.Now, IdTaskStatus = assignedStatusId, TaskAssignment = loopTaskSchedule.LoopTask.TaskAssignment, LoopTaskSchedule = loopTaskSchedule, StartDate = startDate, EndDate = endDate }; return(processedTask.Create()); }
private bool CreateProcessedTask(LoopTaskSchedule loopTaskSchedule, DateTime startTime, DateTime endTime, int differenceBetweenDays) { int assignedStatusId = 1; DateTime startDate = DateTime.Now.AddDays(differenceBetweenDays); startDate = startDate.Date + startTime.TimeOfDay; DateTime endDate = startDate.Date + endTime.TimeOfDay; ProcessedTask processedTask = new ProcessedTask() { Commentary = null, AssignationDate = DateTime.Now, IdTaskStatus = assignedStatusId, TaskAssignment = loopTaskSchedule.LoopTask.TaskAssignment, LoopTaskSchedule = loopTaskSchedule, StartDate = startDate, EndDate = endDate }; return(processedTask.Create()); }
private List <LoopTaskSchedule> ScheduleLoopTask(LoopTask loopTask) { List <LoopTaskSchedule> ltsList = new List <LoopTaskSchedule>(); int month = int.Parse(ddlMeses.SelectedValue); if (loopTask.IsDayOfWeek()) { List <string> selectedDaysOfWeek = cbxDiaSemana.Items.Cast <ListItem>().Where(li => li.Selected).Select(li => li.Value).ToList(); List <string> selectedWeeks = cbxNumeroSemana.Items.Cast <ListItem>().Where(li => li.Selected).Select(li => li.Value).ToList(); loopTask.DeleteScheduledTasks(); if (selectedWeeks.Count > 0 && selectedWeeks.Count < 6) { foreach (string dayOfWeek in selectedDaysOfWeek) { foreach (string numberOfWeek in selectedWeeks) { LoopTaskSchedule lts = new LoopTaskSchedule() { LoopTask = loopTask, DayOfMonth = null, DayOfWeek = int.Parse(dayOfWeek), NumberOfWeek = int.Parse(numberOfWeek), IdMonth = month }; ltsList.Add(lts); } } } else { foreach (string dayOfWeek in selectedDaysOfWeek) { LoopTaskSchedule lts = new LoopTaskSchedule() { LoopTask = loopTask, DayOfMonth = null, DayOfWeek = int.Parse(dayOfWeek), NumberOfWeek = null, IdMonth = month }; ltsList.Add(lts); } } } else { loopTask.DeleteScheduledTasks(); string SelectedDay = ddlDiaDelMes.SelectedValue; LoopTaskSchedule lts = new LoopTaskSchedule() { LoopTask = loopTask, DayOfWeek = null, NumberOfWeek = null, DayOfMonth = int.Parse(SelectedDay), IdMonth = month }; ltsList.Add(lts); } return(ltsList); }
private List <LoopTaskSchedule> CreateRepetitiveTask(User user) { LoopTask loopTask = createLoopTask(user); List <LoopTaskSchedule> ltsList = new List <LoopTaskSchedule>(); if (loopTask.TaskAssignment.Task.Create() && loopTask.TaskAssignment.Create() && loopTask.Create()) { int month = int.Parse(ddlMeses.SelectedValue); if (rbtlTipoRepeticion.SelectedValue == "diaSemana") { List <string> selectedDaysOfWeek = cbxDiaSemana.Items.Cast <ListItem>().Where(li => li.Selected).Select(li => li.Value).ToList(); List <string> selectedWeeks = cbxNumeroSemana.Items.Cast <ListItem>().Where(li => li.Selected).Select(li => li.Value).ToList(); if (selectedWeeks.Count > 0 && selectedWeeks.Count < 6) { foreach (string dayOfWeek in selectedDaysOfWeek) { foreach (string numberOfWeek in selectedWeeks) { LoopTaskSchedule lts = new LoopTaskSchedule() { LoopTask = loopTask, DayOfMonth = null, DayOfWeek = int.Parse(dayOfWeek), NumberOfWeek = int.Parse(numberOfWeek), IdMonth = month }; ltsList.Add(lts); } } } else { foreach (string dayOfWeek in selectedDaysOfWeek) { LoopTaskSchedule lts = new LoopTaskSchedule() { LoopTask = loopTask, DayOfMonth = null, DayOfWeek = int.Parse(dayOfWeek), NumberOfWeek = null, IdMonth = month }; ltsList.Add(lts); } } } else if (rbtlTipoRepeticion.SelectedValue == "diaMes") { string SelectedDay = ddlDiaDelMes.SelectedValue; LoopTaskSchedule lts = new LoopTaskSchedule() { LoopTask = loopTask, DayOfWeek = null, NumberOfWeek = null, DayOfMonth = int.Parse(SelectedDay), IdMonth = int.Parse(ddlMeses.SelectedValue) }; ltsList.Add(lts); } } return(ltsList); }