private void CompareStations(
            List <Entities.Audit.AuditLogEntry> auditLogEntries, Entities.Ride original, Entities.Ride updated)
        {
            IList <int> originalStationIds = original.Stations.Select(x => x.Id).ToList();
            IList <int> updatedStationsIds = updated.Stations.Select(x => x.Id).ToList();

            if (originalStationIds.Except(updatedStationsIds).Any())
            {
                auditLogEntries.Add(new Entities.Audit.AuditLogEntry
                {
                    OriginalValue = string.Join(';', originalStationIds),
                    NewValue      = string.Join(';', updatedStationsIds),
                    TypeOfChange  = $"{(int)TypeOfChange.RideStations} - {TypeOfChange.RideStations}",
                    Planned       = false
                });
            }

            IList <Entities.Station> originalStations = original.Stations.OrderBy(x => x.Name).ToList();
            IList <Entities.Station> updateStations   = original.Stations.OrderBy(x => x.Name).ToList();

            if (originalStations.Any() && updateStations.Any())
            {
                for (int i = 0; i < originalStations.Count && i < updateStations.Count; i++)
                {
                    auditLogEntries.AddRange(_stationComparerService.Compare(originalStations[i], updateStations[i]));
                }
            }
        }
Esempio n. 2
0
        public IList <Entities.Audit.AuditLogEntry> Compare(Entities.Route original, Entities.Route updated)
        {
            var auditLogEntries = new List <Entities.Audit.AuditLogEntry>();

            IList <Entities.Ride> originalRides = original.Rides.ToList();
            IList <Entities.Ride> updatedRides  = updated.Rides.ToList();

            for (int i = 0; i < originalRides.Count && i < updatedRides.Count; i++)
            {
                auditLogEntries.AddRange(_rideComparerService.Compare(originalRides[i], updatedRides[i]));
            }

            return(auditLogEntries);
        }
        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);
        }