コード例 #1
0
        }        //Execute

        private SchedulerDataModel LoadFromDb(int investorId)
        {
            try {
                SchedulerDataModel data = DB.FillFirst <SchedulerDataModel>("I_InvestorGetSchedulerData", CommandSpecies.StoredProcedure,
                                                                            new QueryParameter("InvestorID", investorId));
                return(data);
            } catch (Exception ex) {
                Log.Warn(ex, "Failed to load scheduler data from DB");
                throw;
            }    //try
        }        //LoadFromDb
コード例 #2
0
        public JsonResult UpdateData(EditParams2 param)
        {
            Models.mysqlConnector objConnector = new Models.mysqlConnector();
            if (param.action == "insert" || (param.action == "batch" && param.added != null)) // this block of code will execute while inserting the appointments
            {
                var                value       = (param.action == "insert") ? param.value : param.added[0];
                int                intMax      = db.ScheduleEventDatas.ToList().Count > 0 ? db.ScheduleEventDatas.ToList().Max(p => p.Id) : 1;
                DateTime           startTime   = Convert.ToDateTime(value.StartTime);
                DateTime           endTime     = Convert.ToDateTime(value.EndTime);
                SchedulerDataModel appointment = new SchedulerDataModel()
                {
                    Id         = intMax + 1,
                    StartTime  = startTime.ToLocalTime(),
                    EndTime    = endTime.ToLocalTime(),
                    Job        = value.Job,
                    Attendees  = value.Attendees,
                    Event      = value.Event,
                    ResourceId = value.ResourceId,

                    IsAllDay            = value.IsAllDay,
                    StartTimezone       = value.StartTimezone,
                    EndTimezone         = value.EndTimezone,
                    RecurrenceRule      = value.RecurrenceRule,
                    RecurrenceID        = value.RecurrenceID,
                    RecurrenceException = value.RecurrenceException,
                };
                string resp = objConnector.AddEvent(appointment);
                ViewData["result"] = resp;
            }

            if (param.action == "remove" || (param.action == "batch" && param.deleted != null)) // this block of code will execute while removing the appointment
            {
                int key = Convert.ToInt32(param.key);
                SchedulerDataModel obj2        = param.deleted.FirstOrDefault();
                SchedulerDataModel appointment = new SchedulerDataModel();
                if (appointment != null)
                {
                    ViewData["result"] = objConnector.DeleteEvent(obj2.Id);
                }
            }
            var data = objConnector.GetEvents();

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
コード例 #3
0
ファイル: Scheduler.cs プロジェクト: Vehicle-Tracking/Agents
        private async Task SearchForDisconnectedVehicles(CancellationToken cancellationToken)
        {
            while (true)
            {
                var topKey = double.NaN;
                SchedulerDataModel item = null;

                lock (locker)
                {
                    if (JobQueue.Keys.Count == 0)
                    {
                        break;
                    }

                    topKey = this.JobQueue.Keys.FirstOrDefault(); // null pointer for no key

                    if (JobQueue[topKey].NextSchedule.AddSeconds(-1) > DateTime.UtcNow &&
                        JobQueue[topKey].NextSchedule.Subtract(DateTime.UtcNow).TotalMilliseconds > 999.99d)
                    {
                        break;
                    }

                    item = JobQueue[topKey];
                }

                int cntr = 0;
                while (!(await HttpHelper.SendStatus(item.VehicleId, 0, DateTime.UtcNow, cancellationToken)) && ++cntr > 10) // Stubborn message seder
                {
                    await Task.Delay(TimeSpan.FromMilliseconds(1000), cancellationToken);
                }

                if (cntr > 10)
                {
                    break;            // if yes then message was not sent so give all a try in the next round
                }
                lock (locker)
                {
                    _waitingList.Add(item.VehicleId, item); // wait until to get a response an get rescheduled
                    JobQueue.Remove(topKey);                // temporarily remove it from scheduled jobs
                    break;
                }
            }
        }
コード例 #4
0
        public JsonResult CrudActions(SchedulerDataModel obj)
        {
            Models.mysqlConnector objConnector = new Models.mysqlConnector();
            var      value     = obj;
            int      intMax    = db.ScheduleEventDatas.ToList().Count > 0 ? db.ScheduleEventDatas.ToList().Max(p => p.Id) : 1;
            DateTime startTime = Convert.ToDateTime(value.StartTime);
            DateTime endTime   = Convert.ToDateTime(value.EndTime);


            string resp = "";

            if (obj.action == "edit")
            {
                SchedulerDataModel appointment = new SchedulerDataModel()
                {
                    Id         = value.Id,
                    StartTime  = startTime.ToLocalTime(),
                    EndTime    = endTime.ToLocalTime(),
                    Subject    = value.Job,
                    Attendees  = value.Attendees,
                    Event      = value.Event,
                    ResourceId = value.ResourceId,

                    IsAllDay            = value.IsAllDay,
                    StartTimezone       = value.StartTimezone,
                    EndTimezone         = value.EndTimezone,
                    RecurrenceRule      = value.RecurrenceRule,
                    RecurrenceID        = value.RecurrenceID,
                    RecurrenceException = value.RecurrenceException,
                };

                resp = objConnector.UpdateEvent(appointment);
            }
            else if (obj.action == "Add")
            {
                SchedulerDataModel appointment = new SchedulerDataModel()
                {
                    StartTime  = startTime.ToLocalTime(),
                    EndTime    = endTime.ToLocalTime(),
                    Job        = value.Subject,
                    Attendees  = value.Attendees,
                    Event      = value.Event,
                    ResourceId = value.ResourceId,

                    IsAllDay            = value.IsAllDay,
                    StartTimezone       = value.StartTimezone,
                    EndTimezone         = value.EndTimezone,
                    RecurrenceRule      = value.RecurrenceRule,
                    RecurrenceID        = value.RecurrenceID,
                    RecurrenceException = value.RecurrenceException,
                };
                resp = objConnector.AddEvent(appointment);
            }
            else if (obj.action == "editFromDrop")
            {
                SchedulerDataModel appointment = new SchedulerDataModel()
                {
                    Id = value.Id,
                    //StartTime = startTime.ToLocalTime(),
                    //EndTime = endTime.ToLocalTime(),
                    attendeesAsString = value.attendeesAsString,
                    //ResourceId = value.ResourceId,
                };
                List <SchedulerDataModel> eventListData2 = new List <SchedulerDataModel>();
                eventListData2 = objConnector.searchEventByTime(appointment);
                if (eventListData2 != null && eventListData2.Count > 0)
                {
                    string[] _ArrAttendees = eventListData2.FirstOrDefault().attendeesAsString.Split(',');
                    int      existCount    = 0;
                    foreach (string valueString in _ArrAttendees)
                    {
                        if (valueString == value.attendeesAsString)
                        {
                            existCount++;
                            break;
                        }
                    }

                    if (existCount == 0)
                    {
                        string toModify = eventListData2.FirstOrDefault().attendeesAsString;
                        toModify = toModify + "," + value.attendeesAsString;
                        appointment.attendeesAsString = toModify;
                        appointment.Id = eventListData2.FirstOrDefault().Id;
                        resp           = objConnector.updateByDrop(appointment);
                    }
                }
            }
            ViewData["result"] = resp;



            return(Json(new string[] { }, JsonRequestBehavior.AllowGet));
        }