Пример #1
0
        public async void SignUp(User newUser, Action onErrors)
        {
            IUserLoginMenu Vm = _userLoginVm;

            Vm.LoadedUser.Email       = string.Empty;
            Vm.LoadedUser.PhoneNumber = string.Empty;

            var loginConsumer = CommonConsumerFactory.Create(new ConsumerStringIds <TupleJSON>());

            var userConsumer = CommonConsumerFactory.Create(new Consumer <User>());

            bool postOk = await userConsumer.PostAsync(newUser);

            if (postOk)
            {
                //Vm.LoadedUser = newUser;
                NavigationService navigationService = NavigationService.GetService(Contents.UserLoginContent);
                navigationService.Navigate(navigationService.UserLoginProfileMenu, await RetrieveNewUser());
            }
            else if (await CheckNoDuplicates())
            {
                throw new ArgumentException("Post Failed");
            }



            async Task <bool> CheckNoDuplicates()
            {
                TupleJSON mailTuple = await loginConsumer.GetOneAsync(new[] { newUser.Email });

                TupleJSON phoneTuple = await loginConsumer.GetOneAsync(new[] { newUser.PhoneNumber });

                if (mailTuple != null)
                {
                    Vm.LoadedUser.Email = GetUser(mailTuple).Email;
                }
                if (phoneTuple != null)
                {
                    Vm.LoadedUser.PhoneNumber = GetUser(phoneTuple).PhoneNumber;
                }
                onErrors();
                return(string.IsNullOrEmpty(Vm.LoadedUser.Email) && string.IsNullOrEmpty(Vm.LoadedUser.PhoneNumber));
            }

            async Task <User> RetrieveNewUser()
            {
                if (!string.IsNullOrEmpty(newUser.Email))
                {
                    TupleJSON response = await loginConsumer.GetOneAsync(new[] { newUser.Email });

                    return(GetUser(response));
                }
                else
                {
                    TupleJSON response = await loginConsumer.GetOneAsync(new[] { newUser.PhoneNumber });

                    return(GetUser(response));
                }
            }
        }
Пример #2
0
        public async void BookEvent()
        {
            User loadedUser = AppData.LoadedUser;

            _detailedEventViewModel.IsLoadingBooking = true;
            var consumer = CommonConsumerFactory.Create(new Consumer <Booking>());

            if (loadedUser.Booking == null)
            {
                loadedUser.Booking = new Booking(loadedUser.Id, true)
                {
                    BookedEventsId = new HashSet <int>()
                };
                loadedUser.Booking.BookedEventsId.Add(_loadedEventId);
                await consumer.PostAsync(loadedUser.Booking);
            }
            else
            {
                loadedUser.Booking.BookedEventsId.Add(_loadedEventId);
                await consumer.PutAsync(loadedUser.Booking, new[] { loadedUser.Id });
            }


            _detailedEventViewModel.IsLoadingBooking = false;

            OnClickBook?.Invoke(true); //setting IsChecked to true is part of the OnClickBook method, it doesn't work with OnPropertyChanged(), presumably because of focus loss due to the context flyout.
        }
Пример #3
0
        /*
         * TODO: Reading(probably posting too) from the database with strings is not case sensitive, this is potentially very annoying. Can be fixed easily in terms of logging in, but could be major in terms of signing up.
         * It means that a user with the email [email protected] could be unable to sign up if someone already has signed up with [email protected] as their mail.
         * This is assumed related to the SQL statements generated by DBUtility, not the lib. itself but execution of the statements in SQL.
         */
        public async void Login()
        {
            UserLoginMenuVM Vm = (UserLoginMenuVM)_userLoginVm;

            Vm.IsLoadingUser = true;
            Vm.WrongLogin    = false;

            if (Vm.LoginId != _previousLoginId)
            {
                var       consumer     = CommonConsumerFactory.Create(new ConsumerStringIds <TupleJSON>());
                TupleJSON loginDetails =
                    await consumer.GetOneAsync(new[] { Vm.LoginId });


                if (loginDetails != null)
                {
                    Vm.LoadedUser = GetUser(loginDetails);
                }
            }

            if (Vm.Password == Vm.LoadedUser?.Password)
            {
                var consumer = CommonConsumerFactory.Create(new Consumer <Booking>());
                Vm.LoadedUser.Booking = await consumer.GetOneAsync(new[] { Vm.LoadedUser.Id });

                Vm.NavigationService?.Navigate(Vm.NavigationService.UserLoginProfileMenu, Vm.LoadedUser);
            }
            else
            {
                Vm.WrongLogin = true;
            }

            _previousLoginId = Vm.LoginId;
            Vm.IsLoadingUser = false;
        }
        public async void SaveEvent()
        {
            SetupEventsPageVM Vm = _setupEventsPageVm;

            Vm.IsSaving = true;

            Vm.NewEvent.Duration        = Vm.EventDuration;
            Vm.NewEvent.ImagePath       = Vm.ImagePath;
            Vm.NewEvent.SpeakersInEvent = Vm.SpeakersInEvent.ToList();
            Vm.NewEvent.Type            = Vm.Type;

            Vm.NewEvent.Date = Vm.EventDate;
            Vm.NewEvent.Date = Vm.NewEvent.Date.Add(Vm.EventDateHours);

            Vm.NewEvent.Abstract = UnifyAbstract();

            var consumer = CommonConsumerFactory.Create(new Consumer <Event>());

            if (Vm.NewEvent.EventID == -1)
            {
                bool postOk = await consumer.PostAsync(Vm.NewEvent);
            }
            else if (TriggerOverrideDialogOnSaveEvent != null)
            {
                bool confirmOverride = await TriggerOverrideDialogOnSaveEvent();

                if (confirmOverride)
                {
                    bool overrideOk = await consumer.PutAsync(Vm.NewEvent, new[] { Vm.NewEvent.EventID });
                }
            }
            MessageController SendEditedMessages = new MessageController();

            SendEditedMessages.SendChangedMessages(Vm.NewEvent.EventID, Vm.AbstractHeader);

            Vm.IsSaving = false;
            await CatalogSingleton <Event> .Instance.Reload();
        }