Beispiel #1
0
        // GET : /Distributor/Add
        public ActionResult Schedule(string AlertType, string DeviceId, string AlertId)
        {
            ScheduleViewModel sVM = new ScheduleViewModel();
            sVM.AlertTypes = new AlertData().GetAvailableAlerts();
            sVM.Devices = new AlertData().GetAvailableDevices().Select(m=>m.DeviceId).ToList();

            if (!string.IsNullOrWhiteSpace(AlertType))
            {
                sVM.SelectedAlertType = (DeviceAlarmType)Enum.Parse(typeof(DeviceAlarmType), AlertType);
            }
            if (!string.IsNullOrWhiteSpace(DeviceId))
            {
                sVM.SelectedDevice = DeviceId;
            }
            if (!string.IsNullOrWhiteSpace(AlertId))
            {
                sVM.SelectedAlertId = AlertId;
            }

            if (!string.IsNullOrWhiteSpace(AlertType) && !string.IsNullOrWhiteSpace(DeviceId))
            {
                sVM = new AlertData().GetAlertData(sVM);
            }
            if (Request.IsAjaxRequest())
            {
                return PartialView("_Schedule", sVM);
            }
            return View(sVM);
        }
Beispiel #2
0
        public ActionResult Ac(int? Id = null)
        {
            AcAlert alertModel = new AcAlert();

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

                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
                    };
                }

                bool IsOnAc = false;

                if (alertData.Conditions.Where(m => m.Operand == "OnAc").FirstOrDefault() != null)
                {
                    IsOnAc = Convert.ToBoolean(Convert.ToInt32(alertData.Conditions.Where(m => m.Operand == "OnAc").FirstOrDefault().Value));
                }
                else
                {
                    IsOnAc = false;
                }

                alertModel = new AcAlert()
                {
                    Id = alertData.Id,
                    IsActive = alertData.IsActive,
                    IsOnAc = IsOnAc,
                    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);
        }
Beispiel #3
0
        public ActionResult SaveAlert(FormCollection form)
        {
            ScheduleViewModel model = new ScheduleViewModel();
            // Save the data
            UpdateModel(model, form);
            var tAlertData = new List<AlertBase>();
            TryUpdateModel(tAlertData, form);
            model.AlertDatas = Extensions.ToObjList<AlertBase>(tAlertData);

            new AlertData().SaveAlertData(model);

            return RedirectToAction("Schedule", new { AlertType = model.SelectedAlertType, DeviceId = model.SelectedDevice });
        }
Beispiel #4
0
        public bool SaveAlertData(ScheduleViewModel model)
        {
            try
            {
                List<CustomSqlParameterGroup> paramsToExe = new List<CustomSqlParameterGroup>();

                List<SqlParameter> parentdbParams = new List<SqlParameter>();
                //parentdbParams.Add(new SqlParameter("DeviceId", model.SelectedDevice));
                parentdbParams.Add(new SqlParameter("AlertType", model.SelectedAlertType));
                //dbParams.Add(new SqlParameter("IsActive", model.IsActive));

                switch (model.SelectedAlertType)
                {
                    case DeviceAlarmType.PowerCutAlarm:
                        Utils.Extensions.ToObjList<AlertBase>(model.AlertDatas).ForEach(ad =>
                        {
                            List<SqlParameter> newdbParams = new List<SqlParameter>();
                            newdbParams.AddRange(parentdbParams.ToArray());
                            newdbParams.Add(new SqlParameter("DeviceAlertsId", ad.Id));
                            newdbParams.Add(new SqlParameter("Name", ad.Name));
                            newdbParams.Add(new SqlParameter("DescriptionText", ad.DescriptionText));
                            newdbParams.Add(new SqlParameter("IsActive", ad.IsActive));
                            newdbParams.Add(new SqlParameter("IsToDelete", ad.IsToDelete));

                            Condition con = ad.Conditions[0];
                            con.Operator = "==";
                            con.Operand = "OnPowerCut";
                            // TODO
                            //con.Value = Convert.ToBoolean(con.Value) ? "1" : "0";
                            newdbParams.Add(new SqlParameter("Eval", Tracker.Common.AlertData.SerializeCondition(con)));

                            paramsToExe.Add(new CustomSqlParameterGroup() { Parameters = newdbParams.ToArray() });
                        });
                        break;
                    case DeviceAlarmType.SOSAlarm:
                        parentdbParams.Add(new SqlParameter("Operand", "OnSOS"));
                        parentdbParams.Add(new SqlParameter("Operator", "=="));
                        Utils.Extensions.ToObjList<AlertBase>(model.AlertDatas).ForEach(ad =>
                        {
                            List<SqlParameter> newdbParams = new List<SqlParameter>();
                            newdbParams.AddRange(parentdbParams.ToArray());

                            Condition con = ad.Conditions[0];
                            con.Operator = "==";
                            con.Operand = "OnSOS";
                            // TODO
                            //con.Value = Convert.ToBoolean(con.Value) ? "1" : "0";

                            newdbParams.Add(new SqlParameter("Eval", Tracker.Common.AlertData.SerializeCondition(con)));
                            newdbParams.Add(new SqlParameter("DeviceAlertsId", ad.Id));
                            newdbParams.Add(new SqlParameter("Name", ad.Name));
                            newdbParams.Add(new SqlParameter("DescriptionText", ad.DescriptionText));
                            newdbParams.Add(new SqlParameter("IsActive", ad.IsActive));
                            newdbParams.Add(new SqlParameter("IsToDelete", ad.IsToDelete));

                            paramsToExe.Add(new CustomSqlParameterGroup() { Parameters = newdbParams.ToArray() });
                        });
                        break;
                    case DeviceAlarmType.SpeedAlarm:
                        Utils.Extensions.ToObjList<AlertBase>(model.AlertDatas).ForEach(ad =>
                        {
                            List<SqlParameter> newdbParams = new List<SqlParameter>();
                            newdbParams.AddRange(parentdbParams.ToArray());
                            Condition con = ad.Conditions[0];
                            con.Operand = "Speed";
                            // TODO
                            //con.Value = Convert.ToBoolean(con.Value) ? "1" : "0";

                            newdbParams.Add(new SqlParameter("Eval", Tracker.Common.AlertData.SerializeCondition(con)));
                            newdbParams.Add(new SqlParameter("DeviceAlertsId", ad.Id));
                            newdbParams.Add(new SqlParameter("Name", ad.Name));
                            newdbParams.Add(new SqlParameter("DescriptionText", ad.DescriptionText));
                            newdbParams.Add(new SqlParameter("IsActive", ad.IsActive));
                            newdbParams.Add(new SqlParameter("IsToDelete", ad.IsToDelete));

                            paramsToExe.Add(new CustomSqlParameterGroup() { Parameters = newdbParams.ToArray() });
                        });
                        break;
                    //case DeviceAlarmType.BreakAlarm:
                    //    AlertData = new BreakAlert();
                    //    break;
                    case DeviceAlarmType.VibrationAlarm:
                        Utils.Extensions.ToObjList<AlertBase>(model.AlertDatas).ForEach(ad =>
                        {
                            List<SqlParameter> newdbParams = new List<SqlParameter>();
                            newdbParams.AddRange(parentdbParams.ToArray());
                            Condition con = ad.Conditions[0];
                            con.Operator = "==";
                            con.Operand = "Vibration";
                            // TODO
                            //con.Value = Convert.ToBoolean(con.Value) ? "1" : "0";

                            newdbParams.Add(new SqlParameter("Eval", Tracker.Common.AlertData.SerializeCondition(con)));
                            newdbParams.Add(new SqlParameter("DeviceAlertsId", ad.Id));
                            newdbParams.Add(new SqlParameter("IsActive", ad.IsActive));
                            newdbParams.Add(new SqlParameter("Name", ad.Name));
                            newdbParams.Add(new SqlParameter("DescriptionText", ad.DescriptionText));
                            newdbParams.Add(new SqlParameter("IsToDelete", ad.IsToDelete));

                            paramsToExe.Add(new CustomSqlParameterGroup() { Parameters = newdbParams.ToArray() });
                        });
                        break;
                    case DeviceAlarmType.FenceAlarm:
                    case DeviceAlarmType.FenceInAlarm:
                    case DeviceAlarmType.FenceOutAlarm:
                        {
                            Utils.Extensions.ToObjList<AlertBase>(model.AlertDatas).ForEach(ad =>
                            {
                                CustomSqlParameterGroup pListToProcess = new CustomSqlParameterGroup();
                                List<SqlParameter> newdbParams = new List<SqlParameter>();
                                newdbParams.AddRange(parentdbParams.ToArray());
                                newdbParams.Add(new SqlParameter("DeviceAlertsId", ad.Id));
                                newdbParams.Add(new SqlParameter("IsActive", ad.IsActive));
                                newdbParams.Add(new SqlParameter("IsToDelete", ad.IsToDelete));
                                newdbParams.Add(new SqlParameter("Name", ad.Name));
                                newdbParams.Add(new SqlParameter("DescriptionText", ad.DescriptionText));

                                pListToProcess.Parameters = newdbParams.ToArray();

                                pListToProcess.ChildParameters = new CustomSqlParameterGroup();

                                List<TVParameter> newdbFenceParams = new List<TVParameter>();

                                int listOrder = 0;

                                DataTable fenceDbDt = new DataTable();
                                fenceDbDt.Columns.Add("Col1", typeof(string));
                                fenceDbDt.Columns.Add("Col2", typeof(string));
                                fenceDbDt.Columns.Add("Col3", typeof(string));
                                fenceDbDt.Columns.Add("Col4", typeof(string));
                                fenceDbDt.Columns.Add("Col5", typeof(string));
                                fenceDbDt.Columns.Add("Col6", typeof(string));
                                fenceDbDt.Columns.Add("Col7", typeof(string));

                                if (!string.IsNullOrWhiteSpace(ad.FenceListStr))
                                {
                                    ad.FenceList = ad.FenceList ?? new List<ATFPosition>();
                                    ad.FenceListStr.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList().ForEach(m =>
                                    {
                                        var latLang = m.Trim().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                                        var atP = new ATFPosition()
                                        {
                                            Lat = latLang[0],
                                            Lang = latLang[1],
                                            ListOrder = listOrder
                                        };
                                        fenceDbDt.Rows.Add(ad.Id.ToString(), latLang[0].Trim(), latLang[1].Trim(), null, listOrder.ToString(), null, null);

                                        ad.FenceList.Add(atP);
                                        listOrder++;
                                    });
                                }

                                newdbFenceParams.Add(new TVParameter()
                                {
                                    ParameterName = "@DeviceFenceList",
                                    ParameterValue = fenceDbDt,
                                    ParameterTypeName = "CustomDataType",
                                    SqlDbType = SqlDbType.Structured
                                });

                                pListToProcess.ChildParameters.TableValuedParameters = newdbFenceParams.ToArray();
                                pListToProcess.ChildParameters.Parameters = new SqlParameter[] {
                                    new SqlParameter("DeviceAlertId", ad.Id),
                                    new SqlParameter("IsToDelete", ad.IsToDelete)
                                };

                                newdbFenceParams = null;
                                paramsToExe.Add(pListToProcess);
                            });
                        }
                        break;
                    case DeviceAlarmType.MovingAlarm:
                        Utils.Extensions.ToObjList<AlertBase>(model.AlertDatas).ForEach(ad =>
                        {
                            List<SqlParameter> newdbParams = new List<SqlParameter>();
                            newdbParams.AddRange(parentdbParams.ToArray());

                            for (int i = 0; i < ad.Conditions.Count; i++)
                            {
                                ad.Conditions[i].Operand = "Speed";
                            }

                            ad.Conditions.Insert(0, new Condition()
                            {
                                Operand = "OnAcc",
                                Operator = "==",
                                Value = "0",
                                Conjunction = ConjunctionType.AND
                            });

                            newdbParams.Add(new SqlParameter("Eval", Tracker.Common.AlertData.SerializeCondition(ad.Conditions)));
                            newdbParams.Add(new SqlParameter("DeviceAlertsId", ad.Id));
                            newdbParams.Add(new SqlParameter("IsActive", ad.IsActive));
                            newdbParams.Add(new SqlParameter("Name", ad.Name));
                            newdbParams.Add(new SqlParameter("DescriptionText", ad.DescriptionText));
                            newdbParams.Add(new SqlParameter("IsToDelete", ad.IsToDelete));

                            paramsToExe.Add(new CustomSqlParameterGroup() { Parameters = newdbParams.ToArray() });

                        });
                        break;
                    case DeviceAlarmType.AccAlarm:
                        Utils.Extensions.ToObjList<AlertBase>(model.AlertDatas).ForEach(ad =>
                        {
                            List<SqlParameter> newdbParams = new List<SqlParameter>();
                            newdbParams.AddRange(parentdbParams.ToArray());
                            Condition con = ad.Conditions[0];
                            con.Operator = "==";
                            con.Operand = "OnAcc";
                            // TODO
                            //con.Value = Convert.ToBoolean(con.Value) ? "1" : "0";

                            newdbParams.Add(new SqlParameter("Eval", Tracker.Common.AlertData.SerializeCondition(con)));
                            newdbParams.Add(new SqlParameter("DeviceAlertsId", ad.Id));
                            newdbParams.Add(new SqlParameter("IsActive", ad.IsActive));
                            newdbParams.Add(new SqlParameter("Name", ad.Name));
                            newdbParams.Add(new SqlParameter("DescriptionText", ad.DescriptionText));
                            newdbParams.Add(new SqlParameter("IsToDelete", ad.IsToDelete));

                            paramsToExe.Add(new CustomSqlParameterGroup() { Parameters = newdbParams.ToArray() });
                        });
                        break;
                    case DeviceAlarmType.AcAlarm:
                        Utils.Extensions.ToObjList<AlertBase>(model.AlertDatas).ForEach(ad =>
                        {
                            List<SqlParameter> newdbParams = new List<SqlParameter>();
                            newdbParams.AddRange(parentdbParams.ToArray());
                            Condition con = ad.Conditions[0];
                            con.Operator = "==";
                            con.Operand = "OnAc";
                            // TODO
                            //con.Value = Convert.ToBoolean(con.Value) ? "1" : "0";

                            newdbParams.Add(new SqlParameter("Eval", Tracker.Common.AlertData.SerializeCondition(con)));
                            newdbParams.Add(new SqlParameter("DeviceAlertsId", ad.Id));
                            newdbParams.Add(new SqlParameter("IsActive", ad.IsActive));
                            newdbParams.Add(new SqlParameter("Name", ad.Name));
                            newdbParams.Add(new SqlParameter("DescriptionText", ad.DescriptionText));
                            newdbParams.Add(new SqlParameter("IsToDelete", ad.IsToDelete));

                            paramsToExe.Add(new CustomSqlParameterGroup() { Parameters = newdbParams.ToArray() });
                        });
                        break;
                    case DeviceAlarmType.StopAlarm:
                        Utils.Extensions.ToObjList<AlertBase>(model.AlertDatas).ForEach(ad =>
                        {
                            List<SqlParameter> newdbParams = new List<SqlParameter>();
                            newdbParams.AddRange(parentdbParams.ToArray());

                            // For security reason, delete hijacked entries
                            ad.Conditions.RemoveAll(c => c.Operand.ToLower() != "speed" && c.Operand.ToLower() != "onacc" && c.Operand.ToLower() != "duration");

                            //for (int i = 0; i < ad.Conditions.Count; i++)
                            //{
                            //    ad.Conditions[i].Operand = "Speed";
                            //    ad.Conditions[i].Operator = "==";
                            //    ad.Conditions[i].Value = "0";
                            //}

                            //ad.Conditions.Insert(0, new Condition()
                            //{
                            //    Operand = "OnAcc",
                            //    Operator = "==",
                            //    Value = "0",
                            //    Conjunction = ConjunctionType.AND
                            //});

                            newdbParams.Add(new SqlParameter("Eval", Tracker.Common.AlertData.SerializeCondition(ad.Conditions)));
                            newdbParams.Add(new SqlParameter("DeviceAlertsId", ad.Id));
                            newdbParams.Add(new SqlParameter("IsActive", ad.IsActive));
                            newdbParams.Add(new SqlParameter("Name", ad.Name));
                            newdbParams.Add(new SqlParameter("DescriptionText", ad.DescriptionText));
                            newdbParams.Add(new SqlParameter("IsToDelete", ad.IsToDelete));

                            paramsToExe.Add(new CustomSqlParameterGroup() { Parameters = newdbParams.ToArray() });

                        });
                        break;
                    default:
                        break;
                }

                try
                {
                    paramsToExe.ForEach(p =>
                    {
                        string updatedVal = Data.StoreData_ExecuteScalar(DataBase.Api,
                            CommandType.StoredProcedure, "Master_SaveDeviceAlert",
                            p.Parameters,
                            null
                            );

                        model.SelectedAlertId = updatedVal;

                        if (p.ChildParameters != null && p.ChildParameters.TableValuedParameters != null && p.ChildParameters.TableValuedParameters.Length > 0)
                        {
                            switch (model.SelectedAlertType)
                            {
                                case DeviceAlarmType.FenceAlarm:
                                case DeviceAlarmType.FenceInAlarm:
                                case DeviceAlarmType.FenceOutAlarm:
                                    {
                                        // -1 used for delete the records
                                        if (!string.IsNullOrWhiteSpace(updatedVal) && updatedVal.Trim() != "-1")
                                        {
                                            p.ChildParameters.Parameters[0].Value = updatedVal.Trim();
                                        }

                                        Data.StoreData_ExecuteNonQuery(DataBase.Api,
                                            CommandType.StoredProcedure, "Master_SaveFenceList",
                                            p.ChildParameters.Parameters,
                                            p.ChildParameters.TableValuedParameters.ToList()
                                        );
                                    }
                                    break;
                            }
                        }

                    });

                }
                catch (Exception ex)
                {
                }

                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
Beispiel #5
0
        public ScheduleViewModel GetAlertData(ScheduleViewModel svm)
        {
            DataTable alertsDt = new DataTable();
            try
            {
                List<SqlParameter> dbParams = new List<SqlParameter>();
                dbParams.Add(new SqlParameter("DeviceId", svm.SelectedDevice));
                dbParams.Add(new SqlParameter("AlertType", svm.SelectedAlertType));

                alertsDt = Data.GetData(DataBase.Api,
                    System.Data.CommandType.StoredProcedure, "Master_GetDeviceAlert", dbParams.ToArray());
            }
            catch (Exception ex)
            {
            }

            if (alertsDt != null)
            {
                switch (svm.SelectedAlertType)
                {
                    case DeviceAlarmType.PowerCutAlarm:
                        {
                            var alertDatas = new List<object>();

                            foreach (var aDt in alertsDt.AsEnumerable())
                            {
                                alertDatas.Add(new AlertBase()
                                {
                                    Id = Convert.ToInt32((aDt["Id"] != DBNull.Value ? aDt["Id"] : 0)),
                                    Conditions = Tracker.Common.AlertData.DeSerializeCondition(Convert.ToString(aDt["Eval"] != DBNull.Value ? aDt["Eval"] : "")),
                                    IsActive = Convert.ToBoolean(aDt["IsActive"] != DBNull.Value ? aDt["IsActive"] : false)
                                });
                            }
                            svm.AlertDatas = alertDatas;
                            break;
                        }
                    case DeviceAlarmType.SOSAlarm:
                        {
                            var alertDatas = new List<object>();
                            foreach (var aDt in alertsDt.AsEnumerable())
                            {
                                alertDatas.Add(new AlertBase()
                                {
                                    Id = Convert.ToInt32((aDt["Id"] != DBNull.Value ? aDt["Id"] : 0)),
                                    Conditions = Tracker.Common.AlertData.DeSerializeCondition(Convert.ToString(aDt["Eval"] != DBNull.Value ? aDt["Eval"] : "")),
                                    IsActive = Convert.ToBoolean(aDt["IsActive"] != DBNull.Value ? aDt["IsActive"] : false)
                                });
                            }
                            svm.AlertDatas = alertDatas;
                            break;
                        }
                    case DeviceAlarmType.SpeedAlarm:
                        {
                            var alertDatas = new List<object>();
                            foreach (var aDt in alertsDt.AsEnumerable())
                            {
                                alertDatas.Add(new AlertBase()
                                {
                                    Id = Convert.ToInt32((aDt["Id"] != DBNull.Value ? aDt["Id"] : 0)),
                                    Conditions = Tracker.Common.AlertData.DeSerializeCondition(Convert.ToString(aDt["Eval"] != DBNull.Value ? aDt["Eval"] : "")),
                                    IsActive = Convert.ToBoolean(aDt["IsActive"] != DBNull.Value ? aDt["IsActive"] : false)
                                });
                            }
                            svm.AlertDatas = alertDatas;
                            break;
                        }

                    //case DeviceAlarmType.BreakAlarm:
                    //    _AlertData = new BreakAlert();
                    //    break;
                    case DeviceAlarmType.VibrationAlarm:
                        {
                            var alertDatas = new List<object>();
                            foreach (var aDt in alertsDt.AsEnumerable())
                            {
                                alertDatas.Add(new AlertBase()
                                {
                                    Id = Convert.ToInt32((aDt["Id"] != DBNull.Value ? aDt["Id"] : 0)),
                                    Conditions = Tracker.Common.AlertData.DeSerializeCondition(Convert.ToString(aDt["Eval"] != DBNull.Value ? aDt["Eval"] : "")),
                                    IsActive = Convert.ToBoolean(aDt["IsActive"] != DBNull.Value ? aDt["IsActive"] : false)
                                });
                            }
                            svm.AlertDatas = alertDatas;
                            break;
                        }
                    case DeviceAlarmType.FenceAlarm:
                    case DeviceAlarmType.FenceInAlarm:
                    case DeviceAlarmType.FenceOutAlarm:
                        {
                            var alertDatas = new List<object>();
                            foreach (var aDt in alertsDt.AsEnumerable())
                            {
                                var FenceList = new List<ATFPosition>();
                                try
                                {
                                    var fenceListDt = Data.GetData(DataBase.Api,
                                        System.Data.CommandType.StoredProcedure, "Master_GetFenceList",
                                        new SqlParameter[] {
                                            new SqlParameter("DeviceAlertId", aDt["Id"])
                                        });

                                    FenceList = fenceListDt.AsEnumerable().Select(m => new ATFPosition()
                                    {
                                        Lat = Convert.ToString(m["Latitude"]),
                                        Lang = Convert.ToString(m["Longitude"]),
                                        Distance = (float)Convert.ToDouble(m["Distance"]),
                                        ListOrder = Convert.ToInt32(m["ListOrder"])
                                    }).ToList();
                                }
                                catch (Exception ex)
                                {

                                }

                                alertDatas.Add(new AlertBase()
                                {
                                    Id = Convert.ToInt32((aDt["Id"] != DBNull.Value ? aDt["Id"] : 0)),

                                    Name = Convert.ToString(aDt["Name"]),
                                    DescriptionText = Convert.ToString(aDt["DescriptionText"]),

                                    Conditions = Tracker.Common.AlertData.DeSerializeCondition(Convert.ToString(aDt["Eval"] != DBNull.Value ? aDt["Eval"] : "")),
                                    IsActive = Convert.ToBoolean(aDt["IsActive"] != DBNull.Value ? aDt["IsActive"] : false),

                                    FenceList = FenceList ?? new List<ATFPosition>()
                                });
                            }
                            svm.AlertDatas = alertDatas;
                        }
                        break;
                    case DeviceAlarmType.MovingAlarm:
                        {
                            var alertDatas = new List<object>();
                            foreach (var aDt in alertsDt.AsEnumerable())
                            {
                                var _aData = new AlertBase()
                                {
                                    Id = Convert.ToInt32((aDt["Id"] != DBNull.Value ? aDt["Id"] : 0)),
                                    Conditions = Tracker.Common.AlertData.DeSerializeCondition(Convert.ToString(aDt["Eval"] != DBNull.Value ? aDt["Eval"] : "")),
                                    IsActive = Convert.ToBoolean(aDt["IsActive"] != DBNull.Value ? aDt["IsActive"] : false)
                                };
                                _aData.Conditions.RemoveAll(a => a.Operand.ToLower() == "onacc");
                                alertDatas.Add(_aData);
                            }
                            svm.AlertDatas = alertDatas;
                            break;
                        }
                    case DeviceAlarmType.AccAlarm:
                        {
                            var alertDatas = new List<object>();
                            foreach (var aDt in alertsDt.AsEnumerable())
                            {
                                alertDatas.Add(new AlertBase()
                                {
                                    Id = Convert.ToInt32((aDt["Id"] != DBNull.Value ? aDt["Id"] : 0)),
                                    Conditions = Tracker.Common.AlertData.DeSerializeCondition(Convert.ToString(aDt["Eval"] != DBNull.Value ? aDt["Eval"] : "")),
                                    IsActive = Convert.ToBoolean(aDt["IsActive"] != DBNull.Value ? aDt["IsActive"] : false)
                                });
                            }
                            svm.AlertDatas = alertDatas;
                            break;
                        }
                    case DeviceAlarmType.StopAlarm:
                        {
                            var alertDatas = new List<object>();
                            foreach (var aDt in alertsDt.AsEnumerable())
                            {
                                var _aData = new AlertBase()
                                {
                                    Id = Convert.ToInt32((aDt["Id"] != DBNull.Value ? aDt["Id"] : 0)),
                                    Conditions = Tracker.Common.AlertData.DeSerializeCondition(Convert.ToString(aDt["Eval"] != DBNull.Value ? aDt["Eval"] : "")),
                                    IsActive = Convert.ToBoolean(aDt["IsActive"] != DBNull.Value ? aDt["IsActive"] : false)
                                };
                                alertDatas.Add(_aData);
                            }
                            svm.AlertDatas = alertDatas;
                            break;
                        }
                    default:
                        break;
                }
            }
            return svm;
        }
Beispiel #6
0
        public ActionResult Ac(AcAlert alertModel)
        {
            ScheduleViewModel sVM = new ScheduleViewModel();
            sVM.SelectedAlertType = DeviceAlarmType.AcAlarm;

            sVM.AlertDatas = new List<object>();
            AlertBase alertData = new AlertBase()
            {
                Id = alertModel.Id,
                IsActive = alertModel.IsActive,
                Conditions = new List<Tracker.Common.Condition>() {
                    new Tracker.Common.Condition() {
                        Operand = "OnAc",
                        Value = alertModel.IsOnAc == true ? "1" : "0"
                    }
                }
            };

            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);
        }
Beispiel #7
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);
            }
        }
Beispiel #8
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);
        }
Beispiel #9
0
        public ActionResult Fence(FenceAlert alertModel)
        {
            {
                ScheduleViewModel sVM = new ScheduleViewModel();
                //sVM.SelectedAlertType = DeviceAlarmType.FenceAlarm;
                sVM.SelectedAlertType = alertModel.FenceType;

                sVM.AlertDatas = new List<object>();
                AlertBase alertData = new AlertBase()
                {
                    Id = alertModel.Id,
                    Name = alertModel.Name,
                    DescriptionText = alertModel.Description,
                    IsActive = alertModel.IsActive,
                    FenceListStr = alertModel.PointsStr
                };

                sVM.AlertDatas.Add(alertData);

                if (new AlertData().SaveAlertData(sVM))
                {
                    int updateId = 0;
                    if (int.TryParse(sVM.SelectedAlertId, out updateId))
                    {
                        alertModel.Id = updateId;
                        try
                        {
                            alertModel.Points = (sVM.AlertDatas[0] as AlertBase).FenceList;
                        }
                        catch (Exception aBEx)
                        {
                        }

                        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);
            }
        }
Beispiel #10
0
        public ActionResult Fence(int Id = 0)
        {
            FenceAlert alertModel = new FenceAlert();

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

                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
                    };
                }

                alertModel = new FenceAlert()
                {
                    Id = alertData.Id,
                    Name = alertData.Name,
                    Description = alertData.DescriptionText,
                    IsActive = alertData.IsActive,
                    FenceType = (Id == 0) ? DeviceAlarmType.FenceInAlarm : sVM.SelectedAlertType,
                    Points = alertData.FenceList,
                    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);
        }