public DynamicRulesDTO GetRuleById(int ruleId) { var res = new DynamicRulesDTO(); var entity = _operationDB.NewCorrelationRules.Where(x => x.IsDeleted == false && x.BusinessRuleId == ruleId).FirstOrDefault(); if (entity != null) { res = PrepareModel(entity); } return(res); }
public bool SaveRule(DynamicRulesDTO rule) { return(new DynamicRulesDAL().SaveRule(rule)); }
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); }
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); }