コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
            }
        }