/// <summary> /// Reads the file. /// </summary> /// <param name="fileName">Name of the file.</param> /// <returns>ValidatedResultSet</returns> public async Task <ValidatedResultSet> ReadFile(string fileName) { ValidatedResultSet result = new ValidatedResultSet(); result.SuccessItemsList = new List <string>(); result.FailureItemsList = new List <string>(); Measurement measurement = new Measurement(); Stopwatch stopwatch; stopwatch = Stopwatch.StartNew(); try { using (StreamReader sr = new StreamReader(fileName)) { String line = string.Empty; while ((line = sr.ReadLine()) != null) { string[] parts = line.Split(','); ValidatedResult validateResult = await _validator.ProcessLineItems(parts); if (validateResult.IsValid) { result.SuccessItemsList.Add(validateResult.Content); } else { result.FailureItemsList.Add(validateResult.Content); } } } } catch (Exception ex) { Console.WriteLine($"Error occurred in ReadFile : {ex.Message}"); } stopwatch.Stop(); measurement.ElapsedTime = stopwatch.ElapsedMilliseconds; measurement.MethodName = "ReadFile"; Console.WriteLine($"Time sonsumed : {measurement.ElapsedTime}"); return(result); }
public ValidatedResult <bool> Validate() { ValidatedResult <bool> result = new ValidatedResult <bool>(); result.ReturnObject = true; if (this.mDriverFirstName == null || this.mDriverLastName == null || this.mRatings == null) { result.Messages.Add(new Message(Message.MessageType.Error, "FirstName, LastName and Ratings cannot be NULL")); result.ReturnObject = false; } else if (this.mDriverFirstName.Length < 1 || this.mDriverLastName.Length < 1) { result.Messages.Add(new Message(Message.MessageType.Error, "FirstName and LastName must have at least one character")); result.ReturnObject = false; } return(result); }
/// <summary> /// Processes the line items. /// </summary> /// <param name="lineItems">This method will process each field entry agains the rule being configured.</param> /// <returns> /// ValidatedResult /// </returns> public async Task <ValidatedResult> ProcessLineItems(string[] lineItems) { bool isValid = false; List <string> rejectReasons = new List <string>(); ValidatedResult validatedResult = new ValidatedResult(); try { for (int i = 0; i < lineItems.Length; i++) { isValid = await ValidateAsync(rulesList[i].ExpressonToUse, lineItems[i]); if (!isValid) { rejectReasons.Add(rulesList[i].RejectReason); } } if (rejectReasons.Count == 0) { validatedResult.Content = string.Join(",", lineItems); validatedResult.IsValid = true; } else { validatedResult.Content = string.Concat(string.Join(",", lineItems), ",", string.Join(",", rejectReasons)); validatedResult.IsValid = false; } } catch (Exception ex) { Console.WriteLine($"Error occurred in ProcessLineItems : {ex.Message}"); } return(validatedResult); }