Пример #1
0
        private async void LoadLegalAges()
        {
            BusyMessage = "Loading Legal Ages...";
            BusyState   = true;
            await Task.Run(async() =>
            {
                LegalAges = new ObservableCollection <LegalAge>(await Context.LegalAges.ToListAsync());
                using (DrivingLicenceScannerDbContext context = Context)
                {
                    if (LegalAges.Count == 0)
                    {
                        var legalAges = new List <LegalAge>();

                        legalAges.Add(new LegalAge {
                            Age = 18, Name = "Cigarettes"
                        });
                        legalAges.Add(new LegalAge {
                            Age = 21, Name = "Alcohol"
                        });
                        legalAges.Add(new LegalAge {
                            Age = 17, Name = "Lottery"
                        });

                        context.LegalAges.AddRange(legalAges);
                        await context.SaveChangesAsync();

                        //using the Context (capital C) object because local context gets destroyed
                        LegalAges = new ObservableCollection <LegalAge>(await Context.LegalAges.ToListAsync());
                    }
                }
            });

            BusyState = false;
        }
Пример #2
0
        private async void AddLegalAge()
        {
            BusyMessage = "Saving Changes...";
            BusyState   = true;
            using (DrivingLicenceScannerDbContext context = Context)
            {
                if (LegalAge.Id == 0)
                {
                    context.LegalAges.Add(LegalAge);
                }
                else
                {
                    DbEntityEntry entry = context.Entry(LegalAge);
                    if (entry.State == EntityState.Detached)
                    {
                        context.LegalAges.Attach(LegalAge);
                        entry.State = EntityState.Modified;
                    }
                }
                await context.SaveChangesAsync();

                LoadLegalAges();
                LegalAge = new LegalAge {
                    Age = 18
                };
            }

            BusyState = false;
        }
Пример #3
0
        private async void RemoveLegalAge()
        {
            BusyMessage = "Saving Changes...";
            BusyState   = true;
            await Task.Run(async() =>
            {
                using (DrivingLicenceScannerDbContext context = Context)
                {
                    DbEntityEntry entry = context.Entry(LegalAge);
                    if (entry.State == EntityState.Detached)
                    {
                        context.LegalAges.Attach(LegalAge);
                    }
                    context.LegalAges.Remove(LegalAge);

                    await context.SaveChangesAsync();
                    LoadLegalAges();
                }
            });

            BusyState = false;
        }
        private async void Scan()
        {
            Customer     = null;
            ErrorMessage = String.Empty;
            Customer     = new Customer();

            BusyMessage = "Scanning...";
            BusyState   = true;
            await Task.Run(async() =>
            {
                try
                {
                    Customer.Licence = new Licence();

                    Customer.DoB = DateTime.Parse(Regex.Match(ScanText, Patterns.DoBPattern).Value
                                                  .Replace(Patterns.DoBInitToken, String.Empty)
                                                  .Replace(Patterns.DoBExitToken, String.Empty).Insert(2, "-").Insert(5, "-"));

                    Customer.Height = Int32.Parse(Regex.Match(ScanText, Patterns.HeightPattern).Value
                                                  .Replace(Patterns.HeightInitToken, String.Empty)
                                                  .Replace(Patterns.HeightExitToken, String.Empty));
                    Customer.Sex = Regex.Match(ScanText, Patterns.SexPattern).Value
                                   .Replace(Patterns.SexInitToken, String.Empty)
                                   .Replace(Patterns.SexExitToken, String.Empty) == "1"
                        ? "Male"
                        : "Female";


                    Customer.ZipCode = Regex.Match(ScanText, Patterns.ZipCodePattern).Value
                                       .Replace(Patterns.ZipCodeInitToken, String.Empty)
                                       .Replace(Patterns.ZipCodeExitToken, String.Empty);

                    string firstName = Regex.Match(ScanText, Patterns.FirstNamePattern).Value
                                       .Replace(Patterns.FirstNameInitToken, String.Empty)
                                       .Replace(Patterns.FirstNameExitToken, String.Empty);
                    Customer.FirstName = String.Concat(firstName.Substring(0, 1), firstName.Substring(1).ToLower());


                    string lastName = Regex.Match(ScanText, Patterns.LastNamePattern).Value
                                      .Replace(Patterns.LastNameInitToken, String.Empty)
                                      .Replace(Patterns.LastNameExitToken, String.Empty);
                    Customer.LastName = String.Concat(lastName.Substring(0, 1), lastName.Substring(1).ToLower());


                    string eyeColor = Regex.Match(ScanText, Patterns.EyeColorPattern).Value
                                      .Replace(Patterns.EyeColorInitToken, String.Empty)
                                      .Replace(Patterns.EyeColorExitToken, String.Empty);
                    Customer.EyeColor = String.Concat(eyeColor.Substring(0, 1), eyeColor.Substring(1).ToLower());

                    string state = Regex.Match(ScanText, Patterns.StatePattern).Value
                                   .Replace(Patterns.StateInitToken, String.Empty)
                                   .Replace(Patterns.StateExitToken, String.Empty);
                    Customer.State = String.Concat(state.Substring(0, 1), state.Substring(1).ToLower());

                    string city = Regex.Match(ScanText, Patterns.CityPattern).Value
                                  .Replace(Patterns.CityInitToken, String.Empty)
                                  .Replace(Patterns.CityExitToken, String.Empty);
                    Customer.City = String.Concat(city.Substring(0, 1), city.Substring(1).ToLower());

                    string street = Regex.Match(ScanText, Patterns.StreetPattern).Value
                                    .Replace(Patterns.StreetInitToken, String.Empty)
                                    .Replace(Patterns.StreetExitToken, String.Empty);
                    Customer.Street = String.Concat(street.Substring(0, 1), street.Substring(1).ToLower());

                    Customer.Licence.ExpiryDate =
                        DateTime.Parse(Regex.Match(ScanText, Patterns.LicenceExpireDatePattern).Value
                                       .Replace(Patterns.LicenceExpireDateInitToken, String.Empty)
                                       .Replace(Patterns.LicenceExpireDateExitToken, String.Empty).Insert(2, "-").Insert(5, "-"));

                    Customer.Licence.IssueDate =
                        DateTime.Parse(Regex.Match(ScanText, Patterns.LicenceIssueDatePattern).Value
                                       .Replace(Patterns.LicenceIssueDateInitToken, String.Empty)
                                       .Replace(Patterns.LicenceIssueDateExitToken, String.Empty).Insert(2, "-").Insert(5, "-"));

                    Customer.Licence.Number = Regex.Match(ScanText, Patterns.LicenceNumberPattern).Value
                                              .Replace(Patterns.LicenceNumberInitToken, String.Empty)
                                              .Replace(Patterns.LicenceNumberExitToken, String.Empty);

                    using (DrivingLicenceScannerDbContext context = Context)
                    {
                        //if customer alrady exists, add a new checkin
                        Customer customer =
                            await
                            context.Customers.FirstOrDefaultAsync(
                                cust => cust.Licence.Number == Customer.Licence.Number);
                        if ((customer != null))
                        {
                            customer.CheckIns.Add(new CheckIn {
                                Time = DateTime.Now
                            });
                        }
                        else
                        {
                            context.Customers.Add(Customer);
                            Customer.CheckIns = new Collection <CheckIn> {
                                new CheckIn {
                                    Time = DateTime.Now
                                }
                            };
                        }
                        await context.SaveChangesAsync();
                    }
                    OnPropertyChanged("Age");
                }
                catch (DbException)
                {
                    ErrorMessage = "Application encountered an error while saving new check in.";
                    BusyState    = false;
                }

                catch (Exception)
                {
                    ErrorMessage = "Invalid Data, Please Scan again.";
                    BusyState    = false;
                }


                //checking legal status of customer
                List <LegalAge> legalAges = await Context.LegalAges.ToListAsync();

                var legal = new ObservableCollection <CustomerLegalStatus>();
                foreach (LegalAge legality in legalAges)
                {
                    legal.Add(new CustomerLegalStatus {
                        Allowed = Age >= legality.Age, Name = legality.Name
                    });
                }
                CustomerLegalStatuses = legal;
                BusyState             = false;
            });
        }