Пример #1
0
        public async Task <IActionResult> DeleteUser()
        {
            //user löschen
            var userId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);

            var tbUser = await _context.TblUsers.AsNoTracking().FirstOrDefaultAsync(a => a.Id == userId);

            RestAccess ra = new RestAccess(tbUser.Id.ToString(), tbUser.RestPasswort, Constants.ServiceClientEndPointWithApiPrefix);

            var res = await ra.DeleteUserWeb(new ExDeleteRequest
            {
                Id            = userId,
                CheckPassword = WebAppSettings.CheckPassword,
            });

            if (res.Ok)
            {
                if (res.Result.Result == EnumSaveDataResult.Error)
                {
                    TempData["message"] = res.Result.Description;
                    return(RedirectToAction("Index"));
                }

                //user ausloggen
                return(RedirectToAction("Logout", "Account"));
            }

            TempData["message"] = "Benutzer konnte nicht gelöscht werden";
            return(RedirectToAction("Index"));
        }
Пример #2
0
        public ActionResult Reciepts()
        {
            {
                if (CommonData())
                {
                    return(RedirectToAction("Login", "Account"));
                }
                ViewData["lgnusr"] = getCurrentUser();
                RestAccess           ra     = RestAccess.GetInstance();
                SQLite_Database      sd     = SQLite_Database.GetInstance();
                List <InventoryBook> IBooks = sd.GetInventoryBooks();
                List <Book>          books  = new List <Book>();
                for (int i = 0; i < IBooks.Count; i++)
                {
                    //                books.Add(ra.GetBook(IBooks[i].GetBook()));
                }

                List <List <String> > bookInfo = new List <List <String> >();
                for (int i = 0; i < books.Count; i++)
                {
                    bookInfo.Add(new List <String>());
                    bookInfo[i].Add(books[i].Name);
                    bookInfo[i].Add(books[i].Author);
                    bookInfo[i].Add(books[i].desc);
                    bookInfo[i].Add("$" + books[i].Price.ToString());
                    bookInfo[i].Add(books[i].BookId.ToString());
                }
                ViewData["bookInfo"] = bookInfo;
                return(View());
            }
        }
Пример #3
0
        public async Task <IActionResult> DeleteStore()
        {
            //Geschäft löschen
            var storeId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);

            RestAccess ra  = new RestAccess(Constants.ServiceClientEndPointWithApiPrefix);
            var        res = await ra.DeleteShop(new ExDeleteRequest
            {
                Id            = storeId,
                CheckPassword = WebAppSettings.CheckPassword,
            });

            if (res.Ok)
            {
                if (!res.Result)
                {
                    TempData["message"] = "Geschäft konnte nicht gelöscht werden";
                    return(RedirectToAction(nameof(StoreData)));
                }

                //user ausloggen
                return(RedirectToAction("Logout", "Account"));
            }

            TempData["message"] = "Geschäft konnte nicht gelöscht werden";
            return(RedirectToAction(nameof(StoreData)));
        }
Пример #4
0
        public async Task <IActionResult> RegisterShop(RegisterShopViewModel form)
        {
            if (!ModelState.IsValid)
            {
                return(View(form));
            }
            try
            {
                if (String.IsNullOrEmpty(form.UserName))
                {
                    ModelState.AddModelError("Username", "Bitte eine E-Mail Adresse angeben.");
                    return(View(form));
                }

                var email = form.UserName.Trim().Replace(" ", "").ToLower();
                var store = await _context.TblStores.FirstOrDefaultAsync(a => a.EMail.ToLower() == email && a.Activated);

                if (store != null)
                {
                    ModelState.AddModelError("Username", "Diese E-Mail existiert bereits im System.");
                    return(View(form));
                }

                RestAccess ra = new RestAccess(Constants.ServiceClientEndPointWithApiPrefix);
                await ra.RegisterShop(new ExShopRegistration { EMail = email });

                ViewBag.Message = "Danke! Um die Registrierung abzuschließen überprüfe bitte deinen Posteingang!";
                return(View("Message"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("Password", ex.Message);
                return(View(form));
            }
        }
Пример #5
0
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
            RestAccess ra = RestAccess.GetInstance();

            Database_Test.SQLite_Database db = Database_Test.SQLite_Database.GetInstance();
        }
        //[HttpPost]
        public async Task <IActionResult> TblAppointments_ReadJson(string storeId, string filterFromDate) //string storeId, string filterFromDate)
        {
            int sId = int.Parse(storeId);

            DateTime datFilterFromDate = DateTime.Now;
            bool     success           = DateTime.TryParse(filterFromDate, CultureInfo.GetCultureInfo("de-DE"), DateTimeStyles.None, out datFilterFromDate);

            RestAccess ra = new RestAccess(Constants.ServiceClientEndPointWithApiPrefix);

            var shop = await ra.GetMeetingsForDate(sId, datFilterFromDate.Date);

            var slots = shop.Result.Where(a => a.Id == -1).ToList();

            List <AppointmentEntryViewModel> lstAppointmentEntryViewModels = new List <AppointmentEntryViewModel>();
            int id = 1;

            foreach (var exMeeting in slots)
            {
                var employee = _context.TblEmployees.First(x => x.Id == exMeeting.Staff.Id);
                AppointmentEntryViewModel vm = new AppointmentEntryViewModel();
                vm.Id           = id++;
                vm.EmployeeName = exMeeting.Staff.Name;
                vm.StartTime    = exMeeting.Start.AddHours(2);
                vm.EndTime      = exMeeting.End.AddHours(2);
                vm.ShopId       = sId;
                vm.OptionalText = "";
                vm.PreviewText  = employee.DefaultAnnotation;
                vm.StaffId      = exMeeting.Staff.Id;
                vm.ImageUrl     = string.IsNullOrEmpty(exMeeting.Staff.ImageUrl) ? "" : exMeeting.Staff.ImageUrl;
                lstAppointmentEntryViewModels.Add(vm);
            }

            return(Json(lstAppointmentEntryViewModels));
        }
Пример #7
0
        /// <summary>
        ///     Anmelden
        /// </summary>
        /// <param name="httpContext"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <param name="isPersistent"></param>
        /// <returns></returns>
        public async Task <bool> SignInAdmin(HttpContext httpContext, string username, string password, bool isPersistent = false)
        {
            try
            {
                RestAccess ra   = new RestAccess(Constants.ServiceClientEndPointWithApiPrefix);
                var        user = await ra.UserCheck(username);

                //if (user.Ok && user.Result != null && !user.Result.UserIsLocked && user.Result.UserId > 0)
                if (username.ToLower() == "admin" && password == "[PASSWORT]")
                {
                    //var hash = PasswordHelper.CumputeHash(password);
                    //var userAccountData = await ra.UserAccountData(new ExPostUserPasswortData {UserId = user.Result.UserId, PasswordHash = hash});

                    //if (userAccountData.Ok && userAccountData.Result != null && userAccountData.Result.UserAccountData != null)
                    var tmp = new ExUserAccountData
                    {
                        IsAdmin = true, FirstName = "Admin", LastName = "Admin", UserId = 1, PhoneNumber = "+43"
                    };
                    {
                        ClaimsIdentity  identity  = new ClaimsIdentity(GetUserClaims(tmp), CookieAuthenticationDefaults.AuthenticationScheme);
                        ClaimsPrincipal principal = new ClaimsPrincipal(identity);

                        await httpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal);

                        return(true);
                    }
                }
            }
            catch (Exception)
            {
                return(false);
            }

            return(false);
        }
Пример #8
0
        public void getNonExistent()
        {
            RestAccess db = RestAccess.GetInstance();
            Book       b  = db.GetBook(999999999);

            Assert.AreEqual(b, null);
        }
Пример #9
0
        public void updateNonExistent()
        {
            RestAccess db = RestAccess.GetInstance();
            Boolean    b  = db.UpdateBook(999999999, "", 3, "", "");

            Assert.AreEqual(b, false);
        }
Пример #10
0
        /// <summary>
        ///     Anmelden
        /// </summary>
        /// <param name="httpContext"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <param name="isPersistent"></param>
        /// <returns></returns>
        public async Task <bool> SignInUser(HttpContext httpContext, string username, string password, bool isPersistent = false)
        {
            try
            {
                RestAccess ra   = new RestAccess(Constants.ServiceClientEndPointWithApiPrefix);
                var        user = await ra.UserCheck(username);

                if (user.Ok && user.Result != null && !user.Result.UserIsLocked && user.Result.UserId > 0)
                {
                    var hash            = PasswordHelper.CumputeHash(password);
                    var userAccountData = await ra.UserAccountData(new ExPostUserPasswortData { UserId = user.Result.UserId, PasswordHash = hash });

                    if (userAccountData.Ok && userAccountData.Result != null && userAccountData.Result.UserAccountData != null)
                    {
                        ClaimsIdentity  identity  = new ClaimsIdentity(GetUserClaims(userAccountData.Result.UserAccountData), CookieAuthenticationDefaults.AuthenticationScheme);
                        ClaimsPrincipal principal = new ClaimsPrincipal(identity);

                        await httpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal);

                        return(true);
                    }
                }
            }
            catch (Exception)
            {
                return(false);
            }

            return(false);
        }
Пример #11
0
        public async Task <bool> SignInUserForAdmin(HttpContext httpContext, int userId)
        {
            await httpContext.SignOutAsync();

            RestAccess ra = new RestAccess(Constants.ServiceClientEndPointWithApiPrefix);

            using (Db db = new Db())
            {
                var user = await db.TblUsers.FirstOrDefaultAsync(a => a.Id == userId);

                if (user == null)
                {
                    return(false);
                }

                ExUserAccountData ud = new ExUserAccountData {
                    UserId = user.Id, FirstName = user.Firstname, LastName = user.Lastname, IsAdmin = false, PhoneNumber = user.PhoneNumber
                };

                ClaimsIdentity  identity  = new ClaimsIdentity(GetUserClaims(ud), CookieAuthenticationDefaults.AuthenticationScheme);
                ClaimsPrincipal principal = new ClaimsPrincipal(identity);

                await httpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal);
            }

            return(true);
        }
Пример #12
0
        public async Task <IActionResult> Send(ExPushNotificationData notification)
        {
            //PushNachricht versenden
            RestAccess ra = new RestAccess(Constants.ServiceClientEndPointWithApiPrefix);
            await ra.NotificationSendToDevice(notification);

            return(RedirectToAction("Index", "Device"));
        }
Пример #13
0
        /// <summary>
        ///     Geräte lesen
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <IActionResult> Devices_Read([DataSourceRequest] DataSourceRequest request)
        {
            RestAccess ra = new RestAccess(Constants.ServiceClientEndPointWithApiPrefix);

            var da = await ra.DeviceAllWithUser();

            return(Json(da.Result.ToDataSourceResult(request)));
        }
Пример #14
0
        public ActionResult Catalog(String showid = null)
        {
            CommonData();
            RestAccess           ra       = RestAccess.GetInstance();
            SQLite_Database      sd       = SQLite_Database.GetInstance();
            List <InventoryBook> IBooks   = sd.GetInventoryBooks();
            List <String>        showline = null;
            int sbid = -99;

            ViewData["showmodal"] = false;
            if (showid != null)
            {
                sbid = Convert.ToInt32(showid);
                ViewData["showmodal"] = true;
            }

            List <List <String> > bookInfo = new List <List <String> >();

            for (int i = 0; i < IBooks.Count; i++)
            {
                //System.Diagnostics.Debug.Print(IBooks[i].GetBook().ToString());
                Book b = ra.GetBook(IBooks[i].GetBook());
                bookInfo.Add(new List <String>());
                bookInfo[i].Add(b.Name);
                bookInfo[i].Add(b.Author);
                bookInfo[i].Add(b.desc);
                bookInfo[i].Add("$" + b.Price.ToString());
                bookInfo[i].Add(b.BookId.ToString());
                bookInfo[i].Add(IBooks[i].GetStock().ToString());
                bookInfo[i].Add(IBooks[i].IsEnabled.ToString());
                if (b.BookId == sbid)
                {
                    showline            = bookInfo[i];
                    ViewData["reviews"] = IBooks[i].reviews;
                }
            }
            ViewData["bookInfo"] = bookInfo;
            ViewData["showline"] = null;
            if (showid != null)
            {
                if (showline == null)
                {
                    ViewData["showline"] = new List <String>()
                    {
                        "dummy", "dummy", "dummy", "dummy", "dummy", "dummy"
                    };
                    ViewData["reviews"] = new List <Review>();
                }
                else
                {
                    ViewData["showline"] = showline;
                }
            }

            ViewData["convert"] = RestAccess.GetInstance().CurrRates;

            return(View());
        }
Пример #15
0
 private User getCurrentUser()
 {
     if (Request.Cookies["LoginEmail"] != null)
     {
         String value = Request.Cookies["LoginEmail"].Value;
         return(RestAccess.GetInstance().GetUserByEmail(value));
     }
     return(new User(-99, "*****@*****.**", "Unknown", "User", "dummy"));
 }
Пример #16
0
 private User getCurrentUser()
 {
     if (Request.Cookies["LoginEmail"] != null)
     {
         String value = Request.Cookies["LoginEmail"].Value;
         ViewData["LoginEmail"] = value;
         return(RestAccess.GetInstance().GetUserByEmail(value));
     }
     return(new User(-99, "dummy", "Please", "Login", "dummy"));
 }
        public async Task <IActionResult> DeleteConfirmed(int id)
        {
            int userId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);
            var tbUser = await _context.TblUsers.AsNoTracking().FirstOrDefaultAsync(a => a.Id == userId);

            RestAccess ra = new RestAccess(tbUser.Id.ToString(), tbUser.RestPasswort, Constants.ServiceClientEndPointWithApiPrefix);
            await ra.DeleteMeetingWeb(new ExRemoveMeetingRequest { MeetingId = id, UserType = EnumUserType.Customer, UserId = userId, CheckPassword = WebAppSettings.CheckPassword });

            return(RedirectToAction(nameof(Index)));
        }
Пример #18
0
        public async Task <IActionResult> DeleteConfirmed(int id)
        {
            var res = new RestAccess("", "", Constants.ServiceClientEndPointWithApiPrefix);
            await res.DeleteShop(new ExDeleteRequest
            {
                Id            = id,
                CheckPassword = WebAppSettings.CheckPassword,
            });

            return(RedirectToAction("Logout", "Account"));
        }
Пример #19
0
        public Boolean AddToShoppingCart(int bookid, string email)
        {
            String        command = "insert into ShoppingCartBook(BookID, BookStoreID, Date, UserID) values (@BOOKID, 1, @DATE, @USERID)";
            SQLiteCommand insert  = new SQLiteCommand(command, dbConnection);

            insert.Parameters.Add(new SQLiteParameter("@BOOKID", bookid));
            insert.Parameters.Add(new SQLiteParameter("@DATE", DateTimeSQLite(DateTime.Now)));
            insert.Parameters.Add(new SQLiteParameter("@USERID", RestAccess.GetInstance().GetUserByEmail(email).GetUid()));


            insert.ExecuteNonQuery();
            return(true);
        }
Пример #20
0
        public async Task <IActionResult> LoadStores()
        {
            RestAccess ra      = new RestAccess(Constants.ServiceClientEndPointWithApiPrefix);
            var        request = new ExGetShopsRequest
            {
                MyPosition = new BissPosition(47, 16),
                Range      = 2500
            };

            var allShops = await ra.GetShops(request);

            ShopViewModel vm = new ShopViewModel();

            vm.features = new List <Feature>();
            vm.type     = "FeatureCollection";

            if (allShops != null && allShops.Ok)
            {
                foreach (var exShop in allShops.Result)
                {
                    Feature f = new Feature();
                    f.geometry             = new Geometry();
                    f.geometry.type        = "Point";
                    f.geometry.coordinates = new List <double>();
                    f.geometry.coordinates.Add(exShop.Position.Longitude);
                    f.geometry.coordinates.Add(exShop.Position.Latitude);
                    f.type                = "Feature";
                    f.properties          = new Properties();
                    f.properties.category = String.Join(", ", exShop.Categories.Select(a => a.Name));

                    f.properties.name = exShop.Name;

                    f.properties.storeid = exShop.Id.ToString();

                    f.properties.isopen = exShop.IsOpen;

                    var color = exShop.IsOpen ? "%23FF228B22" : "%23FFDC143C";

                    var glyph = exShop.MainCategory?.Glyph ?? "E994";

                    f.properties.symbol = $"{Constants.ServiceClientEndPointWithApiPrefix}GlyphToIcon/{glyph}/{color}/%23FFFFFFFF/%20%2300FFFFFF/32/false";

                    vm.features.Add(f);
                }
            }

            // Get the data
            string ret = vm.ToJson();

            return(Content(ret, "application/json"));
        }
Пример #21
0
        public static bool PurchaseShoppingCart(List <ShoppingCartBook> sBooks)
        {
            SQLite_Database localAccess  = SQLite_Database.GetInstance();
            RestAccess      remoteAccess = RestAccess.GetInstance();

            //Loop through each book and create a transaction
            foreach (var sBook in sBooks)
            {
                var price = remoteAccess.GetBook(sBook.bookID).Price; //Get book's price
                localAccess.CreateTransaction(sBook.UserID, sBook.bookID, price);
            }

            return(false);
        }
Пример #22
0
        public async Task <IActionResult> Device_Destroy([DataSourceRequest] DataSourceRequest request, ExExtendedUserDeviceInfo device)
        {
            RestAccess             ra    = new RestAccess(Constants.ServiceClientEndPointWithApiPrefix);
            ExPostUserDeviceDelete model = new ExPostUserDeviceDelete();

            model.UserId        = device.UserId;
            model.DeviceToken   = device.DeviceToken;
            model.Plattform     = device.Plattform;
            model.CheckPassword = WebAppSettings.CheckPassword;

            var res = await ra.UserDeviceDeleteWeb(model);

            return(Json(true));
        }
Пример #23
0
        public async Task <IActionResult> RegisterUser(RegisterUserViewModel form)
        {
            if (!ModelState.IsValid)
            {
                return(View(form));
            }
            try
            {
                var success = ValidationHelper.ProoveValidPhoneNumber(form.PhoneNumber, out string telNumber);
                if (!success)
                {
                    ModelState.AddModelError("PhoneNumber", "Die Telefonnummer hat ein ungültiges Format");
                    return(View(form));
                }

                var user = await _context.TblUsers.FirstOrDefaultAsync(a => a.PhoneNumber == telNumber);

                if (user != null)
                {
                    //ModelState.AddModelError("PhoneNumber", "Diese Telefonnumer existiert bereits im System.");
                    //return View(form);
                    TempData["message"] = "Du bist bereits registriert. Bitte logge dich ein!";
                    return(RedirectToAction("LoginUser"));
                }

                RestAccess ra  = new RestAccess(Constants.ServiceClientEndPointWithApiPrefix);
                var        res = await ra.UserCheck(telNumber);

                if (res.Ok)
                {
                    if (!res.Result.IsNewUser)
                    {
                        TempData["message"] = "Du bist bereits registriert. Bitte logge dich ein!";
                        return(RedirectToAction("LoginUser"));
                    }

                    TempData["message"] = "Danke! Um die Registrierung abzuschließen überprüfe bitte deine SMS Nachrichten!";
                    return(RedirectToAction("LoginUser"));
                }

                ViewData["message"] = "Registrierung war nicht erfolgreich. Bitte Eingabe überprüfen!";
                return(View(form));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("PhoneNumber", ex.Message);
                return(View(form));
            }
        }
Пример #24
0
        public void CreateBook()
        {
            RestAccess db = RestAccess.GetInstance();

            db.CreateBook("name", 999, "name", "desc");
            System.Diagnostics.Debug.WriteLine("after creation");
            List <Book> list = db.GetBooks();

            System.Diagnostics.Debug.WriteLine("AFTER GETBOOKS");
            Book book = list.Last();

            System.Diagnostics.Debug.WriteLine("GOT TO DELETE");
            db.DeleteLastBook();

            Assert.AreEqual(book.Author, "name");
        }
Пример #25
0
        public void UpdateBook()
        {
            RestAccess  db    = RestAccess.GetInstance();
            List <Book> list  = db.GetBooks();
            int         id    = list.First().BookId;
            String      auth  = list.First().Author;
            float       price = list.First().Price;
            String      name  = list.First().Name;
            String      desc  = list.First().desc;

            db.UpdateBook(id, "name", 11037, "44", "desc");

            Book book = db.GetBook(id);

            db.UpdateBook(id, auth, price, name, desc);
            Assert.AreEqual(book.Author, "name");
        }
        public async Task <IActionResult> Index(string guid)
        {
            using (Db db = new Db())
            {
                var e = db.TblStores.FirstOrDefault(a => a.ActivationCode == guid);
                if (e == null)
                {
                    return(RedirectToAction("RegisterShop", "Account"));
                }

                RestAccess ra = new RestAccess(Constants.ServiceClientEndPointWithApiPrefix);
                await ra.ForgotPasswordShop(new ExShopForgotPassword { EMail = e.EMail, Step = EnumShopForgotPassword.Step2 });
            }

            TempData["message"] = "Bitte überprüfe deinen Posteingang! Dir wurde ein neues Passwort zugesandt!";

            return(RedirectToAction("LogInShop", "Account"));
        }
Пример #27
0
        public async Task <IActionResult> ForgotPasswordShop(RegisterShopViewModel form)
        {
            if (!ModelState.IsValid)
            {
                return(View(form));
            }

            try
            {
                if (String.IsNullOrEmpty(form.UserName))
                {
                    ModelState.AddModelError("Username", "Bitte eine E-Mail Adresse angeben.");
                    return(View(form));
                }

                var email = form.UserName?.Trim().Replace(" ", "").ToLower();

                RestAccess ra = new RestAccess(Constants.ServiceClientEndPointWithApiPrefix);
                await ra.ForgotPasswordShop(new ExShopForgotPassword { EMail = email, Step = EnumShopForgotPassword.Step1 });

                var store = await _context.TblStores.FirstOrDefaultAsync(a => a.EMail.ToLower() == email && a.Activated);

                if (store == null)
                {
                    ModelState.AddModelError("Username", "Diese E-Mail existiert nicht im System.");
                    return(View(form));
                }

                if (!store.Activated)
                {
                    await ra.RegisterShop(new ExShopRegistration { EMail = email });
                }

                TempData["message"] = "Bitte überprüfe deinen Posteingang. Dir wurde ein Bestätigungs-Link zugesandt.";

                return(RedirectToAction("LogInShop"));
            }
            catch (Exception e)
            {
                ModelState.AddModelError("Username", "Unbekannter Fehler. Bitte versuche es in wenigen Minuten erneut.");
                return(View(form));
            }
        }
Пример #28
0
        public async Task <IActionResult> Index()
        {
            try
            {
                var res = new RestAccess(Constants.ServiceClientEndPointWithApiPrefix);

                var result = await res.GetMaintenanceInfo();

                if (result.Ok && !string.IsNullOrEmpty(result.Result))
                {
                    ViewData["maintenance"] = result.Result;
                }
            }
            catch (Exception ex)
            {
            }

            return(View("IndexV2"));
        }
        public async Task <IActionResult> DeleteConfirmed(int id)
        {
            var tableAppointment = await _context.TblAppointments.FindAsync(id);

            var tbUser = await _context.TblUsers.AsNoTracking().FirstOrDefaultAsync(a => a.Id == tableAppointment.UserId);

            RestAccess ra = new RestAccess(tbUser.Id.ToString(), tbUser.RestPasswort, Constants.ServiceClientEndPointWithApiPrefix);

            var r = new ExRemoveMeetingRequest
            {
                MeetingId     = id,
                UserId        = tableAppointment.UserId,
                UserType      = EnumUserType.ShopEmployee,
                CheckPassword = WebAppSettings.CheckPassword,
            };

            var xxx = await ra.DeleteMeetingWeb(r);

            return(RedirectToAction(nameof(Index)));
        }
Пример #30
0
        public async Task <IActionResult> ForgotPasswordUser(RegisterUserViewModel form)
        {
            if (!ModelState.IsValid)
            {
                return(View(form));
            }
            try
            {
                var success = ValidationHelper.ProoveValidPhoneNumber(form.PhoneNumber, out string telNumber);
                if (!success)
                {
                    ModelState.AddModelError("PhoneNumber", "Die Telefonnummer hat ein ungültiges Format");
                    return(View(form));
                }

                var user = await _context.TblUsers.FirstOrDefaultAsync(a => a.PhoneNumber == telNumber);

                if (user == null)
                {
                    ModelState.AddModelError("PhoneNumber", "Diese Telefonummer existiert nicht!");
                    return(View(form));
                }

                RestAccess ra  = new RestAccess(Constants.ServiceClientEndPointWithApiPrefix);
                var        res = await ra.UserStartResetPassword(user.Id);

                if (res.Ok)
                {
                    TempData.Add("message", "Überprüfe bitte deine SMS Nachrichten!");
                    return(RedirectToAction("LoginUser"));
                }

                ViewData["message"] = "Passwort konnte nicht verschickt werden!";
                return(View(form));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("PhoneNumber", ex.Message);
                return(View(form));
            }
        }