public void DeleteRange() { var target = DoctorScheduleEN.GetService(""); int startDate = DateTimeEpoch.ConvertDateToSecondsEpoch(new DateTime(2020, 1, 6)); int endDate = startDate + DateTimeEpoch.OneDaySeconds; var getTimesP = new DoctorScheduleGetByRangeSP() { DoctorID = TestEnums.User.constDoctorID, StartUnixEpoch = startDate, EndUnixEpoch = endDate }; if (target.GetCountByRange(getTimesP) == 0) { PopulateDatabase(startDate, endDate, 15); Assert.IsTrue(target.GetCountByRange(getTimesP) > 0, "PopulateDatabase didn't generate any doctor availablility time slot."); } target.DeleteRange(new DoctorScheduleDeleteRangeSP() { DoctorID = TestEnums.User.constDoctorID, StartUnixEpoch = startDate, EndUnixEpoch = endDate, }); Assert.IsTrue(target.GetCountByRange(getTimesP) == 0, "Delete range didn't all slots in the specified range. Please make sure that there is no visit associated with slots."); }
///// <summary> ///// Get available times in format for an specific date ///// </summary> ///// <param name="p">parameters</param> ///// <returns></returns> //public IList<vDoctorSchedule> GetTimesByRange(DoctorScheduleGetByRangeSP p) //{ // List<string> columns = new List<string>(); // columns.Add(vDoctorSchedule.ColumnNames.DoctorScheduleID); // columns.Add(vDoctorSchedule.ColumnNames.SlotUnixEpoch); // return GetByRangeWithColumns(p, null); //} private IList <vDoctorSchedule> GetByRangeWithColumns(DoctorScheduleGetByRangeSP p, List <string> columns) { FilterExpression filter = GetByRangeFilter(p); filter.AndMerge(new FilterExpression(vDoctorSchedule.ColumnNames.NumberOfFreePositions, 0, FilterOperatorEnum.GreaterThan)); SortExpression sort = new SortExpression(vDoctorSchedule.ColumnNames.SlotUnixEpoch); if (columns != null) { if (columns.Contains(vDoctorSchedule.ColumnNames.NumberOfAllowedPatients)) { columns.Add(vDoctorSchedule.ColumnNames.NumberOfAllowedPatients); } if (columns.Contains(vDoctorSchedule.ColumnNames.NumberOfRegisteredPatients)) { columns.Add(vDoctorSchedule.ColumnNames.NumberOfRegisteredPatients); } } GetByFilterParameters getParams = new GetByFilterParameters(filter, sort, 0, 1000, columns, GetSourceTypeEnum.View); IList <vDoctorSchedule> list = GetByFilterV(getParams); return(list); // we filter the list from database to speed up the process. //List<vDoctorSchedule> results = new List<vDoctorSchedule>(); //foreach (var item in list) //{ // if (item.NumberOfAllowedPatients > item.NumberOfRegisteredPatients) // results.Add(item); //} //return results; }
private FilterExpression GetByRangeFilter(DoctorScheduleGetByRangeSP p) { FilterExpression filter = new FilterExpression(vDoctorSchedule.ColumnNames.DoctorID, p.DoctorID); filter.AddFilter(new Filter(vDoctorSchedule.ColumnNames.SlotUnixEpoch, p.StartUnixEpoch, FilterOperatorEnum.GreaterThanOrEqualTo)); filter.AddFilter(new Filter(vDoctorSchedule.ColumnNames.SlotUnixEpoch, p.EndUnixEpoch, FilterOperatorEnum.LessThan)); filter.AddFilter(new Filter(vDoctorSchedule.ColumnNames.IsDisabled, false)); filter.AddFilter(new Filter(vDoctorSchedule.ColumnNames.IsWalkingQueue, false)); return(filter); }
/// <summary> /// Returns counts of avaiable slots by range /// </summary> /// <param name="p"></param> /// <returns></returns> public long GetCountByRange(DoctorScheduleGetByRangeSP p) { return(GetCount(GetByRangeFilter(p))); }
/// <summary> /// Gets available times that are reservable by patients /// </summary> /// <param name="p">parameters</param> /// <returns></returns> public IList <vDoctorSchedule> GetByRange(DoctorScheduleGetByRangeSP p) { return(GetByRangeWithColumns(p, null)); }