public async Task <ActionResult <TimeShift> > PostTimeShift(TimeShift timeShift) { _context.TimeShifts.Add(timeShift); await _context.SaveChangesAsync(); return(CreatedAtAction("GetTimeShift", new { id = timeShift.Id }, timeShift)); }
public static TimeSpan GetTimeSpanIntersect(TimeShift input, TimeSpan start, TimeSpan end) { // Loopsback input from 23:59 - 00:00 if (input.Start > input.End) { return(GetTimeSpanIntersect(new TimeShift(input.Start, TimeSpan.FromHours(24)), start, end) + GetTimeSpanIntersect(new TimeShift(TimeSpan.FromHours(0), input.End), start, end)); } // Loopsback Shift from 23:59 - 00:00 if (start > end) { return(GetTimeSpanIntersect(input, new TimeSpan(), end) + GetTimeSpanIntersect(input, start, TimeSpan.FromHours(24))); } if (input.End < start) { return(new TimeSpan()); } if (input.Start > end) { return(new TimeSpan()); } var actualStart = input.Start < start ? start : input.Start; var actualEnd = input.End > end ? end : input.End; return(actualEnd - actualStart); }
public async Task <IActionResult> PutTimeShift(int id, TimeShift timeShift) { if (id != timeShift.Id) { return(BadRequest()); } _context.Entry(timeShift).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!TimeShiftExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
/// <summary> /// UpdateTimeShift method /// </summary> /// <param name="shift"></param> /// <returns></returns> public dynamic UpdateTimeShift(TimeShift shift) { using (SqlConnection sqlCon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CC_ProdConn"].ConnectionString)) { var sqlComm = new SqlCommand { Connection = sqlCon, CommandText = "UpdateSchedulingTimeShift", CommandType = CommandType.StoredProcedure }; foreach (var item in shift.hourID) { sqlComm.Parameters.AddWithValue("@timeShiftId", shift.shiftId); sqlComm.Parameters.AddWithValue("@hourId", item); } sqlCon.Open(); try { sqlComm.ExecuteReader(); } catch (Exception) { throw; } return(shift); } }
private bool IsTimeShiftExistInList(TimeShift tf, List <TimeShift> list) { if (tf == null || list == null) { return(false); } foreach (TimeShift t in list) { if (t.Day == tf.Day && t.Shift == tf.Shift && t.Slot == tf.Slot) { return(true); } } return(false); }
private bool IsTeacherAlreadyBooked(TeacherScheduleModel teacher, TimeShift tf, StoneCastle.Scheduler.Models.TimetableModel tt) { if (teacher == null || tf == null || tt == null) { return(false); } CourseSectionSchedule cs = tt.TimeTableMatrix[tf.Shift * tf.Slot + tf.Slot, (int)tf.Day]; ClassCourseSchedule course = cs.ClassCourse; if (cs.Stage == COURSE_SECTION_STAGE.BOOKED && course != null && course.Teacher != null && course.Teacher.Id == teacher.Id) { return(true); } return(false); }
private bool CanBeBookedForTeacher(TeacherScheduleModel teacher, TimeShift tf, ScheduleBoard board) { foreach (ClassGroupSchedule cg in board.ClassGroups) { foreach (ClassRoomSchedule cr in cg.ClassRooms) { StoneCastle.Scheduler.Models.TimetableModel tt = cr.Timetable; if (this.IsTeacherAlreadyBooked(teacher, tf, tt)) { return(false); } } } return(true); }
/// <summary> /// GetTimeShift method /// </summary> /// <param name="timeShiftId"></param> /// <returns></returns> public dynamic GetTimeShift(int timeShiftId) { using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CC_ProdConn"].ConnectionString)) { List <TimeShift> shifts = new List <TimeShift>(); TimeShift timeShift = new TimeShift(); var sqlCommand = new SqlCommand { Connection = con, CommandText = "GetSchedulingTimeShift", CommandType = CommandType.StoredProcedure }; sqlCommand.Parameters.AddWithValue("@id", timeShiftId); con.Open(); try { var reader = sqlCommand.ExecuteReader(); while (reader.Read()) { try { shifts.Add(new TimeShift { shiftId = int.Parse(reader.GetValue(reader.GetOrdinal("shiftId")).ToString()), shiftName = reader.GetValue(reader.GetOrdinal("shiftName")).ToString(), hourID = new List <int>() }); foreach (var item in shifts) { item.hourID.Add(int.Parse(reader.GetValue(reader.GetOrdinal("hourID")).ToString())); } } catch (Exception) { throw; } } return(shifts); } catch (Exception ex) { throw new Exception(ex.Message); } } }
public void Test(double inputStartHours, double inputEndHours, double expectedRange1Hours, double expectedRange2Hours, double expectedRange3Hours ) { var input = new TimeShift(TimeSpan.FromHours(inputStartHours), TimeSpan.FromHours(inputEndHours)); var ranges = new List<TimeRange> { new TimeRange("Range1", TimeSpan.FromHours(7), TimeSpan.FromHours(18)), new TimeRange("Range2", TimeSpan.FromHours(18), TimeSpan.FromHours(23)), new TimeRange("Range3", TimeSpan.FromHours(23), TimeSpan.FromHours(7)) }; var result = new Dictionary<string, TimeSpan>(); foreach (var range in ranges) { var time = TimeSpacCalculator.GetTimeSpanIntersect(input, range.Start, range.End); result.Add(range.Name, time); Console.WriteLine($"{range.Name}: " + time.TotalHours); } result["Range1"].Should().Be(TimeSpan.FromHours(expectedRange1Hours)); result["Range2"].Should().Be(TimeSpan.FromHours(expectedRange2Hours)); result["Range3"].Should().Be(TimeSpan.FromHours(expectedRange3Hours)); }
private void CalculateTimetable(StoneCastle.Scheduler.Models.TimetableModel tt, ClassCourseSchedule course, ScheduleBoard board) { if (course.Course.SectionPerWeek == 0) { return; } bool canSchedule = false; // Check tt has open-shifts for courses int openSlotCount = 0; for (int i = 0; i < tt.ShiftPerDay * tt.SlotPerShift; i++) { for (int j = 0; j < Commons.Constants.DAY_OF_WEEK; j++) { CourseSectionSchedule cs = tt.TimeTableMatrix[i, j]; if (cs.Stage == COURSE_SECTION_STAGE.OPEN) { openSlotCount++; } } } if (openSlotCount >= course.Course.SectionPerWeek) { canSchedule = true; } if (canSchedule) { List <TimeShift> checklist = new List <TimeShift>(); int bookedCount = 0; do { int i = rand.Next(tt.ShiftPerDay); int j = rand.Next(Commons.Constants.DAY_OF_WEEK); int k = rand.Next(tt.SlotPerShift); CourseSectionSchedule cs = tt.TimeTableMatrix[i * tt.SlotPerShift + k, j]; if (cs.Stage == COURSE_SECTION_STAGE.OPEN) { TimeShift tf = new TimeShift() { Day = (DayOfWeek)j, Shift = i, Slot = k }; if (!this.IsTimeShiftExistInList(tf, checklist)) { checklist.Add(tf); // Check exiting teacher section booked if (this.CanBeBookedForTeacher(course.Teacher, tf, board)) { cs.ClassCourse = course; cs.Stage = COURSE_SECTION_STAGE.BOOKED; bookedCount++; } } } } while (bookedCount < course.Course.SectionPerWeek && checklist.Count < openSlotCount); } }
public void StoreToXML(string path) { XmlDocument doc = new XmlDocument(); XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "UTF-8", null); XmlElement root = doc.CreateElement("Root"); doc.AppendChild(root); XmlElement mfccSetting_e = doc.CreateElement("Mfcc_Setting"); if (mfccSetting_e != null) { XmlElement e_LowFreq = doc.CreateElement("LowFreq"); e_LowFreq.InnerText = LowFreq.ToString(); mfccSetting_e.AppendChild(e_LowFreq); XmlElement e_HighFreq = doc.CreateElement("HighFreq"); e_HighFreq.InnerText = HighFreq.ToString(); mfccSetting_e.AppendChild(e_HighFreq); XmlElement e_TimeFrame = doc.CreateElement("TimeFrame"); e_TimeFrame.InnerText = TimeFrame.ToString(); mfccSetting_e.AppendChild(e_TimeFrame); XmlElement e_TimeShift = doc.CreateElement("TimeShift"); e_TimeShift.InnerText = TimeShift.ToString(); mfccSetting_e.AppendChild(e_TimeShift); XmlElement e_NumCeps = doc.CreateElement("NumCeps"); e_NumCeps.InnerText = NumCeps.ToString(); mfccSetting_e.AppendChild(e_NumCeps); XmlElement e_CepFilter = doc.CreateElement("CepFilter"); e_CepFilter.InnerText = CepFilter.ToString(); mfccSetting_e.AppendChild(e_CepFilter); XmlElement e_UseStandardization = doc.CreateElement("UseStandardization"); e_UseStandardization.InnerText = UseStandardization.ToString(); mfccSetting_e.AppendChild(e_UseStandardization); root.AppendChild(mfccSetting_e); } // Tab Pitch XmlElement pitchSetting_e = doc.CreateElement(string.Empty, "Pitch_Setting", string.Empty); if (pitchSetting_e != null) { XmlElement e_PitchLowFreq = doc.CreateElement("PitchLowFreq"); e_PitchLowFreq.InnerText = PitchLowFreq.ToString(); pitchSetting_e.AppendChild(e_PitchLowFreq); XmlElement e_PitchHighFreq = doc.CreateElement("PitchHighFreq"); e_PitchHighFreq.InnerText = PitchHighFreq.ToString(); pitchSetting_e.AppendChild(e_PitchHighFreq); XmlElement e_PitchTimeFrame = doc.CreateElement("PitchTimeFrame"); e_PitchTimeFrame.InnerText = PitchTimeFrame.ToString(); pitchSetting_e.AppendChild(e_PitchTimeFrame); XmlElement e_PitchTimeShift = doc.CreateElement("PitchTimeShift"); e_PitchTimeShift.InnerText = PitchTimeShift.ToString(); pitchSetting_e.AppendChild(e_PitchTimeShift); XmlElement e_YinThreshhold = doc.CreateElement("YinThreshhold"); e_YinThreshhold.InnerText = YinThreshhold.ToString(); pitchSetting_e.AppendChild(e_YinThreshhold); XmlElement e_PitchType = doc.CreateElement("PitchType"); e_PitchType.InnerText = PitchType.ToString(); pitchSetting_e.AppendChild(e_PitchType); XmlElement e_UseMedian = doc.CreateElement("UseMedian"); e_UseMedian.InnerText = UseMedian.ToString(); pitchSetting_e.AppendChild(e_UseMedian); XmlElement e_MedianWindow = doc.CreateElement("MedianWindow"); e_MedianWindow.InnerText = MedianWindow.ToString(); pitchSetting_e.AppendChild(e_MedianWindow); root.AppendChild(pitchSetting_e); } // Table Log XmlElement logSetting_e = doc.CreateElement(string.Empty, "Logs_Setting", string.Empty); if (logSetting_e != null) { XmlElement e_EnableLog = doc.CreateElement("EnableLog"); e_EnableLog.InnerText = EnableLog.ToString(); logSetting_e.AppendChild(e_EnableLog); XmlElement e_SeparateLog = doc.CreateElement("SeparateLog"); e_SeparateLog.InnerText = SeparateLog.ToString(); logSetting_e.AppendChild(e_SeparateLog); XmlElement e_LevelLog = doc.CreateElement("LogLevel"); e_LevelLog.InnerText = LogLevel.ToString(); logSetting_e.AppendChild(e_LevelLog); root.AppendChild(logSetting_e); } // Tab Noise XmlElement waveSetting_e = doc.CreateElement(string.Empty, "Wave_Setting", string.Empty); if (waveSetting_e != null) { XmlElement e_NormalizeAudio = doc.CreateElement("NormalizeAudio"); e_NormalizeAudio.InnerText = NormalizeAudio.ToString(); waveSetting_e.AppendChild(e_NormalizeAudio); XmlElement e_RemoveNoiseYourAudio = doc.CreateElement("RemoveNoiseYourAudio"); e_RemoveNoiseYourAudio.InnerText = RemoveNoiseYourAudio.ToString(); waveSetting_e.AppendChild(e_RemoveNoiseYourAudio); XmlElement e_ShiftSampleToZero = doc.CreateElement("ShiftSampleToZero"); e_ShiftSampleToZero.InnerText = ShiftSampleToZero.ToString(); waveSetting_e.AppendChild(e_ShiftSampleToZero); root.AppendChild(waveSetting_e); } //Tab VAD XmlElement vadSetting_e = doc.CreateElement("VAD_Setting"); if (vadSetting_e != null) { XmlElement e_PitchThreshold = doc.CreateElement("PitchThreshold"); e_PitchThreshold.InnerText = PitchThreshold.ToString(); vadSetting_e.AppendChild(e_PitchThreshold); XmlElement e_EnergyThreshold = doc.CreateElement("EnergyThreshold"); e_EnergyThreshold.InnerText = EnergyThreshold.ToString(); vadSetting_e.AppendChild(e_EnergyThreshold); root.AppendChild(vadSetting_e); } //Tab Train XmlElement train_e = doc.CreateElement("Train_Setting"); if (train_e != null) { XmlElement e_TrainCofficientType = doc.CreateElement("TrainCofficientType"); e_TrainCofficientType.InnerText = TrainCofficientType.ToString(); train_e.AppendChild(e_TrainCofficientType); XmlElement e_TrainHMMState = doc.CreateElement("TrainHMMState"); e_TrainHMMState.InnerText = TrainHMMState.ToString(); train_e.AppendChild(e_TrainHMMState); XmlElement e_TrainGMMComponent = doc.CreateElement("TrainGMMComponent"); e_TrainGMMComponent.InnerText = TrainGMMComponent.ToString(); train_e.AppendChild(e_TrainGMMComponent); XmlElement e_TrainGMMCovVar = doc.CreateElement("TrainGMMCovVar"); e_TrainGMMCovVar.InnerText = TrainGMMCovVar.ToString(); train_e.AppendChild(e_TrainGMMCovVar); root.AppendChild(train_e); } doc.Save(path); }
public async Task <List <DataPoint> > FetchDataAsync(TimeShift timeShift) { return(await FetchData(FromTime.GetTime(), ToTime.GetTime())); }
public async Task <List <DataPoint> > FetchDataAsync(TimeShift timeShift) { return(await FetchHelper.FetchData(StartTime.GetTime(), EndTime.GetTime(), MaxFetchSize, FetchData)); //return await FetchData(StartTime.GetTime(), EndTime.GetTime()); }
public async Task <List <DataPoint> > FetchDataAsync(TimeShift timeShift) { return(await FetchData(StartTime.GetTime(), EndTime.GetTime())); }
public async Task <List <DataPoint> > FetchDataAsync(TimeShift timeShift) { return(await FetchData(DateTime.Now, DateTime.Now)); }
/// <summary> /// todo нужно заменить на коллекцию попроще /// </summary> /// <param name="tickNumber"></param> /// <param name="timeShift"></param> /// <returns></returns> public static int?GetClosetTickNumber(this SortedDictionary <int, SnapshotWithLastInputId> history, int tickNumber, TimeShift timeShift) { int hypothesisTickNumber = tickNumber + (int)timeShift; while (Mathf.Abs(tickNumber - hypothesisTickNumber) < 2 && hypothesisTickNumber >= 0) { if (history.ContainsKey(hypothesisTickNumber)) { return(hypothesisTickNumber); } hypothesisTickNumber += (int)timeShift; } return(null); }