Exemple #1
0
        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);
        }
Exemple #3
0
        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);
            }
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
                }
            }
        }
Exemple #9
0
     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));
 }
Exemple #10
0
        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);
            }
        }
Exemple #11
0
        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);
        }
Exemple #12
0
 public async Task <List <DataPoint> > FetchDataAsync(TimeShift timeShift)
 {
     return(await FetchData(FromTime.GetTime(), ToTime.GetTime()));
 }
Exemple #13
0
        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()));
 }
Exemple #15
0
 public async Task <List <DataPoint> > FetchDataAsync(TimeShift timeShift)
 {
     return(await FetchData(DateTime.Now, DateTime.Now));
 }
Exemple #16
0
        /// <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);
        }