/// <summary> /// Delete specific instance of service (service for specific time not all the services) /// </summary> /// <param name="schedulingRequest"></param> public void CancelSchedulingRequest(SchedulingRequest schedulingRequest) { throw new NotImplementedException(); //if(_schedulingRequests.ContainsSimilar(schedulingRequest)) //_schedulingRequests[schedulingRequest].Canceled = true; }
public CommandResponse SetScheduleExternalProviderInformation(SchedulingRequest request) { var taskId = request.Id.ToString(); var providerId = request.Provider; var providerScheduleId = request.ProviderScheduleId; var scheduleInfo = (from sInfo in _repository.ScheduleInfos where sInfo.TaskActivity.Id == taskId select sInfo).FirstOrDefault(); if (scheduleInfo == null) { var scheduleNotFoundResponse = CommandResponse.Failed; scheduleNotFoundResponse.Description = $"ScheduleInfo Not Found: Task Id:{taskId}"; return(scheduleNotFoundResponse); } scheduleInfo.ProviderId = providerId; scheduleInfo.ProviderScheduleId = providerScheduleId; _repository.ScheduleInfos.Update(scheduleInfo); var count = _repository.SaveChanges(); if (count > 0) { return(CommandResponse.Ok); } var cannotUpdateDatabaseResponse = CommandResponse.Failed; cannotUpdateDatabaseResponse.Description = $"Cannot update ScheduleInfo: ScheduleInfo Id:{scheduleInfo.Id} Task Id:{taskId}"; return(cannotUpdateDatabaseResponse); }
public void AddChildServiceToSchedule(Legacy.ServiceInstance legacyInstance) { ServiceConfiguration baseConfiguration; if (!_serviceBaseConfigurations.TryGetValue(legacyInstance.Configuration.Name, out baseConfiguration)) { throw new KeyNotFoundException(String.Format("No base configuration exists for the service '{0}'.", legacyInstance.Configuration.Name)); } Profile profile; if (!_profiles.TryGetValue(legacyInstance.AccountID, out profile)) { throw new KeyNotFoundException(String.Format("No profile exists with the ID '{0}' (account ID).", legacyInstance.AccountID)); } ServiceInstance childInstance = ServiceInstance.FromLegacyInstance(legacyInstance, baseConfiguration, profile); SchedulingRequest request = new SchedulingRequest(childInstance, new SchedulingRule() { SpecificDateTime = DateTime.Now, Scope = SchedulingScope.Unplanned, MaxDeviationAfter = TimeSpan.FromHours(1) }, DateTime.Now); AddRequestToSchedule(request); }
/// <summary> /// /// </summary> /// <param name="serviceConfiguration"></param> public void AddRequestToSchedule(SchedulingRequest request) { lock (_unscheduledRequests) { _unscheduledRequests.Add(request); } _needReschedule = true; }
public virtual CommandResponse CreateScheduledingFromRequest(SchedulingRequest request) { var scheduleInfo = MapUtil.Map <SchedulingRequest, ScheduleInfo>(request); _repository.ScheduleInfos.Add(scheduleInfo); var count = _repository.SaveChanges(); var response = new CommandResponse(request.Id, count > 0, request.Id.ToString()); return(response); }
public void Handle(ExternalProviderScheduleCreatedEvent message) { var schedulingRequest = new SchedulingRequest(); var evt = MapUtil.Map <ExternalProviderScheduleCreatedEvent, SchedulingRequestExternalScheduleProviderCreatedEvent>(message); schedulingRequest.Apply(evt); var response = _schedulingRepository.SetScheduleExternalProviderInformation(schedulingRequest); if (response.Success) { _eventStore.Save(message); } }
public IActionResult Put(long id, [FromBody] SchedulingRequest schedulingRequest) { _schedulingRequestService.Update(id, schedulingRequest); return(Ok()); }
public IActionResult Post([FromBody] SchedulingRequest schedulingRequest) { _schedulingRequestService.Add(schedulingRequest); return(Ok()); }
public async void Update(long id, SchedulingRequest schedulingRequest) { await _schedulingRequestRepository.Update(id, schedulingRequest); }
public void Add(SchedulingRequest schedulingRequest) { _schedulingRequestRepository.Create(schedulingRequest); }
/// <summary> /// Get this time line services /// </summary> /// <param name="useCurrentTimeline">if it's for reschedule then the time line is the same as the last schedule</param> /// <returns></returns> private IEnumerable <SchedulingRequest> GetServicesForTimeLine(bool useCurrentTimeline) { // Take next timeline if false if (!useCurrentTimeline) { _timeLineFrom = DateTime.Now; _timeLineTo = DateTime.Now.Add(_neededScheduleTimeLine); } lock (_serviceConfigurationsToSchedule) { for (int i = 0; i < _serviceConfigurationsToSchedule.Count; i++) { ServiceConfiguration service = _serviceConfigurationsToSchedule[i]; foreach (SchedulingRule schedulingRule in service.SchedulingRules) { bool ruleSuitable = false; foreach (TimeSpan time in schedulingRule.Times) { DateTime requestedTime = (_timeLineFrom.Date + time).RemoveSeconds(); while (requestedTime.Date <= _timeLineTo.Date) { switch (schedulingRule.Scope) { case SchedulingScope.Day: ruleSuitable = true; break; case SchedulingScope.Week: int dayOfWeek = (int)requestedTime.DayOfWeek + 1; if (schedulingRule.Days.Contains(dayOfWeek)) { ruleSuitable = true; } break; case SchedulingScope.Month: int dayOfMonth = requestedTime.Day; if (schedulingRule.Days.Contains(dayOfMonth)) { ruleSuitable = true; } break; } if ((ruleSuitable) && (requestedTime >= _timeLineFrom && requestedTime <= _timeLineTo) || (requestedTime <= _timeLineFrom && (schedulingRule.MaxDeviationAfter == TimeSpan.Zero || requestedTime.Add(schedulingRule.MaxDeviationAfter) >= DateTime.Now)) ) { SchedulingRequest request = new SchedulingRequest(service, schedulingRule, requestedTime); if (!_unscheduledRequests.ContainsSignature(request) && !_scheduledRequests.ContainsSignature(request)) { yield return(request); } } requestedTime = requestedTime.AddDays(1); } } } } } }