Exemple #1
0
        public bool SaveRule(DynamicRulesDTO rule)
        {
            var allRules = GetAllRules(true);

            if (allRules != null && allRules.Any(x => x.RuleName.ToLower().Trim() == rule.RuleName.ToLower().Trim()))
            {
                return(false);
            }
            var ruleEntity = new NewCorrelationRule
            {
                CreatedBy      = rule.CreatedById,
                DateCreated    = DateTime.Now,
                IntervalPeriod = rule.TimeIntervalMins,
                ModifiedBy     = rule.ModifiedBy,
                RuleName       = rule.RuleName,
                RulePriority   = rule.Priority != null ? rule.Priority.PriorityID : 1
            };

            if (rule.DriverDetails != null)
            {
                ruleEntity.CorrelationDriverDetail = new CorrelationDriverDetail
                {
                    AgeFrom = rule.DriverDetails.MinAge ?? 0,
                    AgeTo   = rule.DriverDetails.MaxAge ?? 180,
                };
            }
            if (rule.ViolationDetails != null && rule.ViolationDetails.Any())
            {
                ruleEntity.CorrelationViolationDetails = new List <CorrelationViolationDetail>();
                foreach (var item in rule.ViolationDetails)
                {
                    var model = new CorrelationViolationDetail
                    {
                        IsDeleted       = false,
                        ViolationTypeId = (int)item.ViolationType,
                        ViolationQty    = item.ViolationQty
                    };
                    if (item.SpeedOverKMsDetails != null && item.ViolationType == ViolationTypesEnum.Speed)
                    {
                        model.OverSpeedDetailsId = item.SpeedOverKMsDetails.OverSpeedId;
                    }
                    ;
                    if (item.TrafficCrossDetails != null && item.ViolationType == ViolationTypesEnum.RedLight)
                    {
                        model.TrraficCrossTimeDetailsId = item.TrafficCrossDetails.TrafficCrossId;
                    }
                    ;
                    ruleEntity.CorrelationViolationDetails.Add(model);
                }
            }
            if (rule.LocationsDetails != null)
            {
                if (rule.LocationsDetails.RegionTypes == (int)RegionType.NORMAL)
                {
                    ruleEntity.LocationDetailsId = rule.LocationsDetails.RegionId;
                }
                if (rule.LocationsDetails.RegionTypes == (int)RegionType.CUSTEM)
                {
                    var region = new Region
                    {
                        IsDeleted    = false,
                        RegionName   = rule.LocationsDetails.RegionName,
                        RegionTypeId = (int)rule.LocationsDetails.RegionTypes,
                    };
                    var points = "";
                    foreach (var item in rule.LocationsDetails.RegionPoints)
                    {
                        points += string.Format("{0}&{1};", item.Latitude, item.Longitude);
                    }
                    region.RegionPoints = points.TrimEnd(';');
                    ruleEntity.Region   = region;
                }
            }
            if (rule.VehicleDetails != null && (rule.VehicleDetails.VehicleBrand != null || rule.VehicleDetails.VehicleYear != null || rule.VehicleDetails.VehicleType != null))
            {
                ruleEntity.VehicleDetail = new VehicleDetail();
                if (rule.VehicleDetails.VehicleBrand != null)
                {
                    ruleEntity.VehicleDetail.VehicleBrandUTSId = rule.VehicleDetails.VehicleBrand.VehicleBrandId;
                }
                if (rule.VehicleDetails.VehicleYear != null)
                {
                    ruleEntity.VehicleDetail.VehicleModelYear = rule.VehicleDetails.VehicleYear;
                }
                if (rule.VehicleDetails.VehicleType != null)
                {
                    ruleEntity.VehicleDetail.VehicleTypeId = rule.VehicleDetails.VehicleType.VehicleTypeID;
                }
            }

            if (rule.TimeDetails != null)
            {
                ruleEntity.TimeDetail = new TimeDetail()
                {
                    FromDate = rule.TimeDetails.FromDate,
                    ToDate   = rule.TimeDetails.ToDate,
                    FromTime = rule.TimeDetails.FromTime,
                    ToTime   = rule.TimeDetails.ToTime,
                    TimeType = (int)rule.TimeDetails.TimeType,
                };
                if (rule.TimeDetails.WeekDays != null && rule.TimeDetails.WeekDays.Any())
                {
                    var weekStr = "";
                    foreach (var item in rule.TimeDetails.WeekDays)
                    {
                        weekStr += string.Format("{0},", item);
                    }
                    ruleEntity.TimeDetail.WeekDays = weekStr.TrimEnd(',');
                }
                //ruleEntity.t = new TimeDetail();
            }
            _operationDB.NewCorrelationRules.Add(ruleEntity);
            return(_operationDB.SaveChanges() > 0);
        }
Exemple #2
0
        private DynamicRulesDTO PrepareModel(NewCorrelationRule item)
        {
            var model = new DynamicRulesDTO()
            {
                CreatedById       = item.CreatedBy,
                IsDeleted         = item.IsDeleted,
                ModifiedBy        = item.ModifiedBy,
                RuleId            = item.BusinessRuleId,
                RuleName          = item.RuleName,
                TimeIntervalMins  = item.IntervalPeriod,
                NumberOfOccerance = item.CorrelationMessagesLogs.Count()
            };

            if (item.RulePriority > 0)
            {
                model.Priority = new BusinessRulePriorityDTO()
                {
                    PriorityID = item.RulePriority
                };
            }

            if (item.CorrelationDriverDetail != null)
            {
                model.DriverDetails = new BusinessDriverDetailsDTO
                {
                    MaxAge = item.CorrelationDriverDetail.AgeTo,
                    MinAge = item.CorrelationDriverDetail.AgeFrom
                };
            }
            if (item.CorrelationViolationDetails != null && item.CorrelationViolationDetails.Any())
            {
                model.ViolationDetails = new List <BusinessRuleViolationsDetailsDTO>();
                foreach (var viol in item.CorrelationViolationDetails)
                {
                    var violModel = new BusinessRuleViolationsDetailsDTO();
                    violModel.ViolationQty = viol.ViolationQty;
                    if (viol.OverSpeed != null)
                    {
                        violModel.ViolationType       = ViolationTypesEnum.Speed;
                        violModel.SpeedOverKMsDetails = new OverSpeedDTO
                        {
                            IsDeleted      = viol.OverSpeed.IsDeleted,
                            OverSpeedId    = viol.OverSpeed.OverSpeedId,
                            OverSpeedValue = viol.OverSpeed.OverSpeedValue
                        };
                    }
                    if (viol.TrafficCrossTime != null)
                    {
                        violModel.ViolationType       = ViolationTypesEnum.RedLight;
                        violModel.TrafficCrossDetails = new TrafficCrossDTO
                        {
                            IsDeleted         = viol.TrafficCrossTime.IsDeleted,
                            TrafficCrossId    = viol.TrafficCrossTime.TrafficCrossTimeId,
                            TrafficCrossValue = viol.TrafficCrossTime.TrafficCrossTimeValue
                        };
                    }
                    model.ViolationDetails.Add(violModel);
                }
            }
            if (item.Region != null)
            {
                model.LocationsDetails = GetRegionById(item.Region.RegionId);
            }
            if (item.TimeDetail != null)
            {
                model.TimeDetails = new TimeDetailsDTO
                {
                    FromDate      = item.TimeDetail.FromDate,
                    FromTime      = item.TimeDetail.FromTime,
                    TimeDetailsId = item.TimeDetail.TimeDetailsId,
                    TimeType      = item.TimeDetail.TimeType,
                    ToDate        = item.TimeDetail.ToDate,
                    ToTime        = item.TimeDetail.ToTime
                };
                if (item.TimeDetail.TimeType == (int)ScheduleType.WEEKDAYS && item.TimeDetail.WeekDays != "")
                {
                    try
                    {
                        model.TimeDetails.WeekDays = new List <int>();

                        if (item.TimeDetail.WeekDays != null)
                        {
                            var allDays = item.TimeDetail.WeekDays.Split(',');
                            if (allDays != null && allDays.Any())
                            {
                                foreach (var day in allDays)
                                {
                                    model.TimeDetails.WeekDays.Add(int.Parse(day));
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                    }
                }
            }
            if (item.VehicleDetail != null)
            {
                model.VehicleDetails = new BusinessRuleVehicleDetailsDTO()
                {
                    VehicleYear = item.VehicleDetail.VehicleModelYear
                };
                if (item.VehicleDetail.VehicleBrandUTSId.HasValue)
                {
                    model.VehicleDetails.VehicleBrand = new VehicleBrandDTO
                    {
                        VehicleBrandId = item.VehicleDetail.VehicleBrandUTSId.Value
                    };
                }
                if (item.VehicleDetail.VehicleTypeId.HasValue)
                {
                    model.VehicleDetails.VehicleType = new VehicleTypeDTO
                    {
                        VehicleTypeID = item.VehicleDetail.VehicleTypeId.Value
                    };
                }
            }
            return(model);
        }