コード例 #1
0
        public void PopulateQueue()
        {
            if (!_isLocked)
            {
                _isLocked = true;

                _departmentsService    = Bootstrapper.GetKernel().Resolve <IDepartmentsService>();
                _scheduledTasksService = Bootstrapper.GetKernel().Resolve <IScheduledTasksService>();
                _usersService          = Bootstrapper.GetKernel().Resolve <IUsersService>();

                Task t1 = new Task(() =>
                {
                    try
                    {
                        var allItems = _scheduledTasksService.GetUpcomingScheduledTaks();

                        // Filter only the past items and ones that are 5 minutes 30 seconds in the future
                        var items = from st in allItems
                                    let department                         = _departmentsService.GetDepartmentByUserId(st.UserId)
                                                                 let email = _usersService.GetMembershipByUserId(st.UserId).Email
                                                                             let runTime = st.WhenShouldJobBeRun(TimeConverterHelper.TimeConverter(DateTime.UtcNow, department))
                                                                                           where
                                                                                           st.TaskType == (int)TaskTypes.ReportDelivery && runTime.HasValue &&
                                                                                           runTime.Value >= TimeConverterHelper.TimeConverter(DateTime.UtcNow, department) &&
                                                                                           runTime.Value <= TimeConverterHelper.TimeConverter(DateTime.UtcNow, department).AddMinutes(5).AddSeconds(30)
                                                                                           select new
                        {
                            ScheduledTask = st,
                            Department    = department,
                            Email         = email
                        };

                        foreach (var i in items)
                        {
                            var qi           = new ReportDeliveryQueueItem();
                            qi.ScheduledTask = i.ScheduledTask;
                            qi.Department    = i.Department;
                            qi.Email         = i.Email;

                            _queue.Enqueue(qi);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logging.LogException(ex);
                    }
                    finally
                    {
                        _isLocked = false;
                        _cleared  = false;

                        _departmentsService    = null;
                        _scheduledTasksService = null;
                        _usersService          = null;
                    }
                });

                t1.Start();
            }
        }
コード例 #2
0
 public StatusScheduleLogic()
 {
     _userStateService      = Bootstrapper.GetKernel().Resolve <IUserStateService>();
     _scheduledTasksService = Bootstrapper.GetKernel().Resolve <IScheduledTasksService>();
     _departmentsService    = Bootstrapper.GetKernel().Resolve <IDepartmentsService>();
     _actionLogsService     = Bootstrapper.GetKernel().Resolve <IActionLogsService>();
 }
コード例 #3
0
ファイル: MaintenanceLogic.cs プロジェクト: mrjohndowe/Core
 public MaintenanceLogic()
 {
     _departmentMembersRepository = Bootstrapper.GetKernel().Resolve <IDepartmentMembersRepository>();
     _userProfileService          = Bootstrapper.GetKernel().Resolve <IUserProfileService>();
     _usersService          = Bootstrapper.GetKernel().Resolve <IUsersService>();
     _departmentsService    = Bootstrapper.GetKernel().Resolve <IDepartmentsService>();
     _scheduledTasksService = Bootstrapper.GetKernel().Resolve <IScheduledTasksService>();
     _callsRepository       = Bootstrapper.GetKernel().Resolve <ICallsRepository>();
 }
コード例 #4
0
        public void PopulateQueue()
        {
            Logging.LogTrace("StaffingJob: Entering PopulateQueue");

            if (!_isLocked)
            {
                _isLocked              = true;
                _departmentsService    = Bootstrapper.GetKernel().Resolve <IDepartmentsService>();
                _scheduledTasksService = Bootstrapper.GetKernel().Resolve <IScheduledTasksService>();

                var t1 = new Task(() =>
                {
                    try
                    {
                        var allItems = _scheduledTasksService.GetUpcomingScheduledTaks();
                        Logging.LogTrace(string.Format("StaffingJob: Analyzing {0} schedule tasks", allItems.Count));

                        // Filter only the past items and ones that are 5 minutes 30 seconds in the future
                        var items = from st in allItems
                                    let department = _departmentsService.GetDepartmentByUserId(st.UserId)
                                                     let runTime = st.WhenShouldJobBeRun(TimeConverterHelper.TimeConverter(DateTime.UtcNow, department))
                                                                   where
                                                                   (st.TaskType == (int)TaskTypes.DepartmentStaffingReset || st.TaskType == (int)TaskTypes.UserStaffingLevel) &&
                                                                   runTime.HasValue && runTime.Value >= TimeConverterHelper.TimeConverter(DateTime.UtcNow, department) &&
                                                                   runTime.Value <= TimeConverterHelper.TimeConverter(DateTime.UtcNow, department).AddMinutes(5).AddSeconds(30)
                                                                   select new
                        {
                            ScheduledTask = st,
                            Department    = department
                        };

                        foreach (var i in items)
                        {
                            var qi           = new StaffingScheduleQueueItem();
                            qi.ScheduledTask = i.ScheduledTask;
                            qi.Department    = i.Department;

                            _queue.Enqueue(qi);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logging.LogException(ex);
                    }
                    finally
                    {
                        _isLocked = false;
                        _cleared  = false;

                        _departmentsService    = null;
                        _scheduledTasksService = null;
                    }
                }, TaskCreationOptions.LongRunning);

                t1.Start();
            }
        }
コード例 #5
0
 public StaffingSchedulesController(
     IUsersService usersService,
     IDepartmentsService departmentsService,
     IUserStateService userStateService,
     IUserProfileService userProfileService,
     IAuthorizationService authorizationService,
     IScheduledTasksService scheduledTasksService)
 {
     _usersService          = usersService;
     _departmentsService    = departmentsService;
     _userStateService      = userStateService;
     _userProfileService    = userProfileService;
     _authorizationService  = authorizationService;
     _scheduledTasksService = scheduledTasksService;
 }
コード例 #6
0
 public with_the_scheduled_tasks_service()
 {
     _scheduledTasksService = Resolve <IScheduledTasksService>();
 }
コード例 #7
0
 public ReportDeliveryLogic()
 {
     _scheduledTasksService = Bootstrapper.GetKernel().Resolve <IScheduledTasksService>();
     _emailService          = Bootstrapper.GetKernel().Resolve <IEmailService>();
     _pdfProvider           = Bootstrapper.GetKernel().Resolve <IPdfProvider>();
 }