コード例 #1
0
ファイル: MainViewModel.cs プロジェクト: Barkoff/WpfApp
        /// <summary>
        /// —оздание или удаление элемента, в зависимости от параметра команды
        /// </summary>
        /// <param name="o"></param>
        private void RemoveOrInsertItem(object o)
        {
            var isInsert = o.ToString() == "Insert";

            if (SelectedItem is Door)
            {
                var door    = (Door)SelectedItem;
                var tempCar = CarList.FirstOrDefault(x => x.Doors.IndexOf(door) > -1);
                if (isInsert)
                {
                    tempCar?.Doors.Insert(tempCar.Doors.IndexOf(door), new Door {
                        DetailNumber = tempCar.Doors.Max(x => x.DetailNumber) + 1
                    });
                }
                else
                {
                    tempCar?.Doors.Remove(door);
                }
                return;
            }

            if (SelectedItem is Wheel)
            {
                var wheel   = (Wheel)SelectedItem;
                var tempCar = CarList.FirstOrDefault(x => x.Wheels.IndexOf(wheel) > -1);
                if (isInsert)
                {
                    tempCar?.Wheels.Insert(tempCar.Wheels.IndexOf(wheel), new Wheel {
                        DetailNumber = tempCar.Wheels.Max(x => x.DetailNumber) + 1
                    });
                }
                else
                {
                    tempCar?.Wheels.Remove(wheel);
                }
                return;
            }

            if (SelectedItem is Nut)
            {
                var nut       = (Nut)SelectedItem;
                var tempWheel = CarList.FirstOrDefault(x => x.Wheels.Select(y => y.Nuts.IndexOf(nut) > -1).FirstOrDefault())?.Wheels.FirstOrDefault(y => y.Nuts.IndexOf(nut) > -1);
                if (isInsert)
                {
                    tempWheel?.Nuts.Insert(tempWheel.Nuts.IndexOf(nut), new Nut {
                        DetailNumber = tempWheel.Nuts.Max(x => x.DetailNumber) + 1
                    });
                }
                else
                {
                    tempWheel?.Nuts.Remove(nut);
                }
            }
        }
コード例 #2
0
        public async void send()
        {
            if (string.IsNullOrEmpty(driverLicenceNo) || string.IsNullOrEmpty(imageSource) || string.IsNullOrEmpty(carPlate))
            {
                await Application.Current.MainPage.DisplayAlert("Błąd", "The required fields have not been completed", "OK");
            }
            else
            {
                //Sprawdzam czy podany przez użytkownika numer rejestracyjny pojazdu istnieje
                //w liście z pobranymi samochodami użytkownika i wybieram numer id tego samochodu
                var x = CarList.FirstOrDefault(z => z.PlateNo == carPlate);
                if (x != null)
                {
                    application.CarId = x.Id;

                    //Wybieram ID zalogowanego użytkownika z wyszukanego po numerze rejstracyjnym(który wprowadził użytkownik) samochodu
                    //Zakładam ze numer rejstracyjny a zarazem samochód jest przypisany do tego użytkownika i będzie to dobre Id użytkownika
                    //jest to słabe i wadliwe rozwazanie ale nie mam skąd pobrac Id zalogowanego uzytkownika
                    //w AuthenticationService zapisujemy w Settings imie, nazwisko, zdjęcie, oraz token dostępu zalogowanego użytkownika.
                    //Może warto pomyśleć nad tym aby pobierać z API również Id użytkownika który sie zalogował i również zapisać to w Settings
                    application.UserId = x.UserId;

                    application.DriverLicenceNo    = driverLicenceNo;
                    application.Date               = DateTime.Now;
                    application.DriverLicencePhoto = imageSource;

                    await _applicationService.SendApplicationAsync(application);

                    await Application.Current.MainPage.DisplayAlert("Save", "The application has been sent", "OK");

                    await Task.Delay(400);

                    //Docelowo strona do wysyłania aplikacji będzie dostępna ze strony w której są wyświetlane wszystkie aplikacje wiec
                    //po klikniecie Send i poprawnym wysłaniu, użytkownik zostanie przeniesiony z powrotem do strony ze wszystkimi jego aplikacjami;
                    //Aktualnie po kliknięciu w przycisk wyrzuca błąd
                    await Application.Current.MainPage.Navigation.PopAsync();
                }
                else
                {
                    await Application.Current.MainPage.DisplayAlert("Błąd", "A car with such registration numbers was not found", "OK");
                }
            }
        }