public Entities.Context.EntityContext ConvertJsonRouteToEntityContext(Models.InputJson.Json inputJson) { Models.Route jsonRoute = inputJson.Route; Entities.Route entityRoute = new Entities.Route { Id = jsonRoute.Id, Name = jsonRoute.Name, ActiveDays = Enum.Parse <Days>(jsonRoute.ActiveDays), StartDate = jsonRoute.StartDate, EndDate = jsonRoute.EndDate, Rides = MapJsonRides(jsonRoute.Rides, inputJson).ToList() }; Entities.Context.EntityContext entityContext = new Entities.Context.EntityContext() { Routes = new List <Entities.Route> { entityRoute }, PassengerStationRelations = MapJsonPassengersStations(inputJson) }; return(entityContext); }
public async Task CompareRoutesAndGetAudit(string originalJsonPath, string updatedJsonPath, string outputJsonPath) { Models.InputJson.Json originalJson = await _jsonFileService.ReadJsonFileAsync(originalJsonPath); Models.InputJson.Json updatedJson = await _jsonFileService.ReadJsonFileAsync(updatedJsonPath); Entities.Context.EntityContext originalContext = _jsonToEntityConverter.ConvertJsonRouteToEntityContext(originalJson); Entities.Context.EntityContext updatedContext = _jsonToEntityConverter.ConvertJsonRouteToEntityContext(updatedJson); IList <Entities.Audit.AuditLogEntry> auditLogEntries = _entityContextComparerService.CompareContextsAndGetAudits(originalContext, updatedContext); Models.OutputJson.OutputJson outputJson = MapAuditEntitiesToOutputJson(auditLogEntries); await _jsonFileService.WriteJsonFileAsync(outputJson, originalJsonPath); }
public IList <Entities.Audit.AuditLogEntry> CompareContextsAndGetAudits( Entities.Context.EntityContext originalContext, Entities.Context.EntityContext updatedContext) { List <Entities.Audit.AuditLogEntry> auditLogEntries = new List <Entities.Audit.AuditLogEntry>(); for (int i = 0; i < originalContext.Routes.Count && i < updatedContext.Routes.Count; i++) { auditLogEntries.AddRange(_routeComparerService.Compare(originalContext.Routes[i], updatedContext.Routes[i])); } auditLogEntries = auditLogEntries .GroupBy(x => new { x.TypeOfChange, x.Planned, x.OriginalValue, x.NewValue }) .Select(x => x.ToList()) .SelectMany(x => x).ToList(); return(auditLogEntries); }