public async Task <List <string> > Validate(HydrantRequest hydrant) { var requiredFieldsErrors = GetMandatoryFieldErrors(hydrant); if (requiredFieldsErrors.Any()) { return(requiredFieldsErrors); } var formatErrors = IsValidHydrant(hydrant); if (formatErrors.Any()) { return(formatErrors); } var refereceErrors = await GetReferencedFieldErrors(hydrant); if (refereceErrors.Any()) { return(refereceErrors); } return(new List <string>()); }
public async Task <List <string> > GetReferencedFieldErrors(HydrantRequest hydrant) { var errors = new List <string>(); if (hydrant.WaterSourceType == null && hydrant.WaterSourceTypeID != null) { if (!(from w in await _waterSourceRepository.GetWaterSourceTypes(hydrant.SubscriberID) where w.WaterSourceTypeID == hydrant.WaterSourceTypeID select w).Any()) { errors.Add("Invalid water source type"); return(errors); } } if (!(from f in await _flowRateRepository.GetFlowRates() where f.FlowRateID == hydrant.FlowRateID select f).Any()) { errors.Add("Invalid flow rate"); } return(errors); }
public List <string> IsValidHydrant(HydrantRequest hydrant) { List <string> InvalidTypes = new List <string>(); string[] OutletsNumber = { "1", "2", "3", "4", "4+" }; int[] DirectionToOpen = { 1, 2 }; bool IsValidDirectionToOpen = false; bool IsValidOutLets = false; bool isIncompleteGeography = false; bool isEmptyGeography = false; if (!hydrant.IsUpdated) { isIncompleteGeography = hydrant.Latitude == 0 || hydrant.Longitude == 0; isEmptyGeography = hydrant.Latitude == 0 & hydrant.Longitude == 0; } #region Mandatory fields format if (!(hydrant.HydrantID.GetType() == typeof(long))) { InvalidTypes.Add("Invalid Hydrant ID."); } if (!(hydrant.SubscriberID.GetType() == typeof(long))) { InvalidTypes.Add("Invalid Subscriber ID."); } if (!(hydrant.Status.GetType() == typeof(bool))) { InvalidTypes.Add("Invalid Status."); } if (!(hydrant.FlowRateID.GetType() == typeof(long))) { InvalidTypes.Add("Invalid FlowRateID."); } if ((isEmptyGeography) || (isIncompleteGeography)) { if (hydrant.Longitude == 0) { InvalidTypes.Add("Invalid Longitude."); } if (hydrant.Latitude == 0) { InvalidTypes.Add("Invalid Latitude."); } } if (hydrant.Latitude == 0 & hydrant.Longitude == 0 && !hydrant.IsUpdated) { InvalidTypes.Add("Invalid Longitude."); InvalidTypes.Add("Invalid Latitude."); } if (!(hydrant.StreetNumber.GetType() == typeof(string))) { InvalidTypes.Add("Invalid Street Number."); } if (!(hydrant.StreetName.GetType() == typeof(string))) { InvalidTypes.Add("Invalid Street Name."); } if (!(hydrant.City.GetType() == typeof(string))) { InvalidTypes.Add("Invalid City."); } if (!(hydrant.State.GetType() == typeof(string))) { InvalidTypes.Add("Invalid State."); } #endregion #region Non-mandatory fields format if (hydrant.WaterSourceType != null) { if (hydrant.WaterSourceType.SubscriberID.GetType() != typeof(long)) { InvalidTypes.Add("Subscriber id must be a number."); } if (hydrant.WaterSourceType.WaterSourceTypeID.GetType() != typeof(long)) { InvalidTypes.Add("Water source type id must be a number."); } if (hydrant.WaterSourceType.Name.GetType() != typeof(string)) { InvalidTypes.Add("Name must be text."); } } if (hydrant.WaterSourceTypeID != null && !(hydrant.WaterSourceTypeID.GetType() == typeof(long))) { InvalidTypes.Add("Invalid Water Source Type ID."); } if (hydrant.Name != null && !(hydrant.Name.GetType() == typeof(string))) { InvalidTypes.Add("Invalid Name."); } if (hydrant.OutletsNumber != null) { foreach (string options in OutletsNumber) { if (hydrant.OutletsNumber == options) { IsValidOutLets = true; break; } } if (!IsValidOutLets) { InvalidTypes.Add("Invalid Outlets Number."); } } if (hydrant.OutletSize != null) { if (hydrant.OutletSize != null && hydrant.OutletSize == "") { InvalidTypes.Add("Invalid Outlet Size."); } } if (hydrant.ThreadType != null && !(hydrant.ThreadType.GetType() == typeof(string))) { InvalidTypes.Add("Invalid Thread Type."); } if (hydrant.DirectionToOpen != null) { foreach (int options in DirectionToOpen) { if (hydrant.DirectionToOpen == options) { IsValidDirectionToOpen = true; break; } } if (!IsValidDirectionToOpen) { InvalidTypes.Add("Invalid Direction to Open."); } } if (hydrant.Notes != null && !(hydrant.Notes.GetType() == typeof(string))) { InvalidTypes.Add("Invalid Notes"); } if (hydrant.ClosestCrossStreet != null && !(hydrant.ClosestCrossStreet.GetType() == typeof(string))) { InvalidTypes.Add("Invalid Closest Cross Street."); } #endregion return(InvalidTypes); }
public List <string> GetMandatoryFieldErrors(HydrantRequest hydrant) { List <string> errors = new List <string>(); if (hydrant.SubscriberID == null) { errors.Add("Invalid SubscriberId"); } if (hydrant.Status == null) { errors.Add("Invalid hydrant status"); } if (hydrant.FlowRateID == null) { errors.Add("Invalid flow rate"); } if (hydrant.Latitude == null) { errors.Add("Invalid latitude"); } if (hydrant.Longitude == null) { errors.Add("Invalid longitude"); } if (hydrant.StreetNumber == null) { errors.Add("Invald street number"); } if (hydrant.StreetName == null) { errors.Add("Invalid street name"); } if (hydrant.City == null) { errors.Add("Invalid city"); } if (hydrant.State == null) { errors.Add("Invalid state"); } if (hydrant.WaterSourceType != null) { if (hydrant.WaterSourceType.Name == null) { errors.Add("Invalid new water source type name"); } if (hydrant.WaterSourceType.SubscriberID == null) { errors.Add("Invalid subscriber id for water source type"); } if (hydrant.WaterSourceType.WaterSourceTypeID == null) { errors.Add("Invalid water source type id"); } } return(errors); }