public async Task <ExCheckUser> UserCheck(string userPhone) { Logging.Log.LogInfo($"UserCheck {userPhone}"); using (var db = new Db()) { if (!PhoneHelper.IsNumber(userPhone)) { return(new ExCheckUser { WrongNumberFormat = true, }); } var numberOk = PhoneHelper.ProoveValidPhoneNumber(userPhone, out var num); if (!numberOk) { return(new ExCheckUser { WrongNumberFormat = true, }); } var data = await db.TblUsers.FirstOrDefaultAsync(u => u.PhoneNumber == num); if (data == null) { var newPwd = PasswordHelper.GeneratePassword(5); var newPassword = PasswordHelper.CumputeHash(newPwd); data = new TableUser { PhoneNumber = num, Locked = false, Password = newPassword, DefaultUserLanguage = "de", PhoneChecked = true, }; db.TblUsers.Add(data); try { db.SaveChanges(); } catch (Exception e) { Logging.Log.LogWarning($"Datenbank Initialwerte konnten nicht erzeugt werden: {e}"); return(new ExCheckUser { UserId = -1, ErrorFromDb = true, }); } //SMS senden try { await SendPassword(data, newPwd); return(new ExCheckUser { IsNewUser = true, UserId = data.Id, }); } catch (Exception e) { Logging.Log.LogError($"{e}"); return(new ExCheckUser { ErrorFromDb = true, WrongNumberFormat = true, IsNewUser = true, UserId = data.Id, }); } } if (data.IsDemoUser) { return new ExCheckUser { UserIsLocked = true, IsDemoUser = true } } ; return(new ExCheckUser { UserIsLocked = data.Locked, UserId = data.Id, EMailNotChecked = !data.PhoneChecked }); } }