public async Task <IActionResult> SignupAsync([FromBody] SignupBindingModel collection) { // todo: Captcha if (collection == null) { return(BadRequest(_localizer[DataTransferer.DefectiveEntry().Message])); } if (string.IsNullOrEmpty(collection?.Username)) { return(BadRequest(_localizer[DataTransferer.DefectiveEmailOrCellPhone().Message])); } Log.Debug($"A User is trying to register with this data: {JsonConvert.SerializeObject(collection)}"); collection.Username = collection.Username.Trim(); try { if (collection.Username.IsPhoneNumber()) { collection.Phone = collection.Username; if (await _accountProfileService.FirstAsync(new AccountProfileGetFirstSchema { LinkedId = collection.Phone }).ConfigureAwait(true) != null) { return(BadRequest(_localizer[DataTransferer.CellPhoneAlreadyExists().Message])); } } else if (new EmailAddressAttribute().IsValid(collection.Username)) { collection.Email = collection.Username; if (await _accountProfileService.FirstAsync(new AccountProfileGetFirstSchema { LinkedId = collection.Email }).ConfigureAwait(true) != null) { return(BadRequest(_localizer[DataTransferer.EmailAlreadyExists().Message])); } } else { return(BadRequest(_localizer[DataTransferer.InvalidEmailOrCellPhone().Message])); } if (string.IsNullOrEmpty(collection.Password) && string.IsNullOrEmpty(collection.ConfirmPassword)) { return(BadRequest(_localizer[DataTransferer.DefectivePassword().Message])); } if (collection.Password != collection.ConfirmPassword) { return(BadRequest(_localizer[DataTransferer.PasswordsMissmatch().Message])); } if (string.IsNullOrEmpty(collection.DeviceId) || string.IsNullOrEmpty(collection.DeviceName)) { return(BadRequest(_localizer[DataTransferer.UnofficialRequest().Message])); } var result = await _accountService.SignupAsync(collection).ConfigureAwait(true); switch (result.Code) { case 200: return(Ok(result.Data)); case 400: return(BadRequest(result.Message)); case 500: default: return(Problem(result.Message)); } } catch (Exception ex) { Log.Error(ex, ex.Source); return(Problem(_localizer[DataTransferer.SomethingWentWrong().Message])); } }