예제 #1
0
        public ActionResult Stoppage(int Id = 0)
        {
            StoppageAlert alertModel = new StoppageAlert();

            try
            {
                ScheduleViewModel sVM = new ScheduleViewModel();
                sVM.SelectedAlertType = DeviceAlarmType.StopAlarm;

                sVM = new AlertData().GetAlertDetails(sVM, Id);

                AlertBase alertData = sVM.AlertDatas.FirstOrDefault() as AlertBase;

                if (alertData == null)
                {
                    alertData = new AlertBase()
                    {
                        Id         = 0,
                        Conditions = new List <Tracker.Common.Condition>(),
                        IsActive   = false
                    };
                }

                int    Duration      = 5;
                string SpeedComparer = string.Empty;

                if (alertData.Conditions.Where(m => m.Operand == "Duration").FirstOrDefault() != null)
                {
                    Duration = Convert.ToInt32(alertData.Conditions.Where(m => m.Operand == "Duration").FirstOrDefault().Value);
                }

                alertModel = new StoppageAlert()
                {
                    Id          = alertData.Id,
                    Name        = alertData.Name,
                    Description = alertData.DescriptionText,
                    IsActive    = alertData.IsActive,
                    Duration    = Duration,
                    Devices     = new List <DeviceDetailSelection>()
                };
                List <DeviceDetailSelection> availableDevices = new AlertData().GetAvailableDevices();
                List <string> activeDevices = new AlertData().GetDevicesForAlert(alertData.Id);
                if (availableDevices != null && availableDevices.Count > 0)
                {
                    alertModel.Devices = availableDevices.Select(m => new DeviceDetailSelection
                    {
                        DeviceId  = m.DeviceId,
                        VehicleId = m.VehicleId,
                        Checked   = activeDevices.Contains(m.DeviceId)
                    }).ToList();
                }
            }
            catch (Exception ex)
            {
            }
            return(View(alertModel));
        }
예제 #2
0
        public ActionResult Stoppage(StoppageAlert alertModel)
        {
            {
                ScheduleViewModel sVM = new ScheduleViewModel();
                sVM.SelectedAlertType = DeviceAlarmType.StopAlarm;

                sVM.AlertDatas = new List <object>();
                AlertBase alertData = new AlertBase()
                {
                    Id              = alertModel.Id,
                    Name            = alertModel.Name,
                    DescriptionText = alertModel.Description,
                    IsActive        = alertModel.IsActive,
                    Conditions      = new List <Tracker.Common.Condition>()
                    {
                        new Tracker.Common.Condition()
                        {
                            Operand     = "Speed",
                            Operator    = "==",
                            Value       = "0",
                            Conjunction = Tracker.Common.ConjunctionType.AND
                        },
                        new Tracker.Common.Condition()
                        {
                            Operand  = "Duration",
                            Operator = "<=",
                            Value    = alertModel.Duration.ToString()
                        }
                    }
                };

                sVM.AlertDatas.Add(alertData);

                if (new AlertData().SaveAlertData(sVM))
                {
                    int updateId = 0;
                    if (int.TryParse(sVM.SelectedAlertId, out updateId))
                    {
                        alertModel.Id = updateId;
                        if (alertModel.Devices != null && alertModel.Devices.Count > 0)
                        {
                            alertModel.Devices.ForEach(d =>
                            {
                                try
                                {
                                    new AlertData().SaveDevicesForAlert(alertModel.Id, d.DeviceId, !d.Checked);
                                }
                                catch (Exception ex)
                                {
                                }
                            });
                        }
                    }
                    ViewBag.AlertWriteStatus = "Success";
                }
                else
                {
                    ViewBag.AlertWriteStatus = "Failed";
                }

                return(View(alertModel));
            }
        }