private async Task <Identifier> AddIdentifierAsync(DriverData.DriverData driverData, Driver driver) { var cardNumber = driverData.Identification.CardIdentification.CardNumber.ToString(); var expiryDate = DateTime.Parse((string)driverData.Identification.CardIdentification.CardExpiryDate.DateTime); var identifier = await Context.Identifiers.FirstOrDefaultAsync(x => x.CardNumber == cardNumber && x.DriverId == driver.Id && x.CustomerId == driver.CustomerId && x.CardExpiryDate >= expiryDate).ConfigureAwait(false); if (identifier != null) { return(identifier); } identifier = new Identifier { CardNumber = cardNumber, DriverId = driver.Id, CustomerId = driver.CustomerId, CardIssueDate = DateTime.Parse((string)driverData.Identification.CardIdentification.CardIssueDate.DateTime), CardValidityBegin = DateTime.Parse((string)driverData.Identification.CardIdentification.CardValidityBegin.DateTime), CardExpiryDate = DateTime.Parse((string)driverData.Identification.CardIdentification.CardExpiryDate.DateTime), }; await Context.Identifiers.AddAsync(identifier).ConfigureAwait(false); await Context.SaveChangesAsync().ConfigureAwait(false); return(identifier); }
private async Task <Driver> AddDriverAsync(DriverData.DriverData driverData) { var fullName = driverData.Identification.DriverCardHolderIdentification.CardHolderFirstNames + " " + driverData.Identification.DriverCardHolderIdentification.CardHolderSurname; var driver = await Context.Drivers .FirstOrDefaultAsync(x => x.Name == fullName) .ConfigureAwait(false); if (driver == null) { var customerId = Guid.Parse("13bce473-5e31-4f3f-87a0-8863b6a814f5"); var customer = await Context.Customers.FirstOrDefaultAsync(x => x.Id == customerId) .ConfigureAwait(false); driver = new Driver { Name = driverData.Identification.DriverCardHolderIdentification.CardHolderFirstNames + " " + driverData.Identification.DriverCardHolderIdentification.CardHolderSurname, BirthDate = DateTime.Parse((string)driverData.Identification.DriverCardHolderIdentification.CardHolderBirthDate .Datef), CustomerId = customer.Id }; await Context.Drivers.AddAsync(driver).ConfigureAwait(false); await Context.SaveChangesAsync().ConfigureAwait(false); } return(driver); }
private async Task AddDriverCarActivitiesAsync(DriverData.DriverData driverData, Identifier identifier) { foreach (var record in driverData.DriverActivityData.CardDriverActivity.CardActivityDailyRecord) { var currentDate = DateTime.Parse((string)record.DateTime); var dailyActivity = await Context.CardActivityDailyRecords.FirstOrDefaultAsync(x => x.Date == currentDate && x.CardNumber == identifier.CardNumber).ConfigureAwait(false); if (dailyActivity == null) { dailyActivity = new CardActivityDailyRecord { CardNumber = identifier.CardNumber, Date = currentDate.Date, TotalDistance = double.Parse(record.Distance) }; await Context.CardActivityDailyRecords.AddAsync(dailyActivity).ConfigureAwait(false); } var lastAct = record.ActivityChangeInfo.LastOrDefault(); if (lastAct != null) { TimeSpan time = TimeSpan.Parse(lastAct.Time); var activityType = (DriverActivityType)Enum.Parse(typeof(DriverActivityType), lastAct.Activity); byte slot = (byte)(lastAct.Slot == "0" ? 0 : 1); var activity = await Context.CardDriverActivities .FirstOrDefaultAsync(x => x.TimeSpan == time && x.DriverActivityType == activityType && x.ActivityDailyRecordId == identifier.Id && x.SlotOne == slot) .ConfigureAwait(false); if (activity != null) { return; } } foreach (var activityChangeInfo in record.ActivityChangeInfo) { TimeSpan time = TimeSpan.Parse(activityChangeInfo.Time); var activityType = (DriverActivityType)Enum.Parse(typeof(DriverActivityType), activityChangeInfo.Activity); byte slot = (byte)(activityChangeInfo.Slot == "0"? 0 : 1); var activity = new CardDriverActivity { ActivityDailyRecordId = dailyActivity.Id, TimeSpan = time, SlotOne = slot, CardPresent = activityChangeInfo.Inserted != "False", DriverActivityType = activityType, Offset = activityChangeInfo.FileOffset, ActivityUtc = currentDate.Add(time) }; await Context.CardDriverActivities.AddAsync(activity).ConfigureAwait(false); } await Context.SaveChangesAsync().ConfigureAwait(false); } }