public Task <Result <object> > Register(AdvanceRegisterModel model) => Result <object> .TryAsync(async() => { model.User.Password = _cryptoService.ComputeSha512Hash(model.User.Password); var username = model.User.Firstname.ToCharArray()[0] + "." + model.User.Lastname; var duplicateUsername = await _repository.FirstOrDefaultAsNoTrackingAsync <User>(u => u.Username == username); if (duplicateUsername.Success && duplicateUsername.Data != null) { username = model.User.Firstname + "." + model.User.Lastname; } duplicateUsername = await _repository.FirstOrDefaultAsNoTrackingAsync <User>(u => u.Username == username); if (duplicateUsername.Success && duplicateUsername.Data != null) { username = model.User.Firstname + "." + model.User.Lastname + new Random(1000).Next(); } var duplicateMobile = await _repository.FirstOrDefaultAsNoTrackingAsync <User>(u => u.Mobile == model.User.Mobile); if (duplicateMobile.Success && duplicateMobile.Data != null) { return(Result <object> .Failed(Error.WithData(1000, new[] { "Duplicate Mobile Number " }))); } var duplicateEmail = await _repository.FirstOrDefaultAsNoTrackingAsync <User>(u => u.Email == model.User.Email); if (duplicateEmail.Success && duplicateEmail.Data != null) { return(Result <object> .Failed(Error.WithData(1000, new[] { "Duplicate Email Address " }))); } var result = await _repository.FirstOrDefaultAsync <Role>(r => r.Name == "NormalUser", r => r.RoleFeature.Select(rf => rf.Feature.FeaturePermission.Select(fp => fp.Permission))); var role = result.Data; var id = Guid.NewGuid(); var user = new User { Id = id, Address = model.User.Address, City = model.User.City, Province = model.User.Province, CreationDate = DateTime.Now, DateOfBirth = model.User.DateOfBirth ?? DateTime.Now, Email = model.User.Email, Enabled = true, SinNumber = model.User.SinNumber, Firstname = model.User.Firstname, Password = _cryptoService.ComputeSha512Hash("" + model.User.DateOfBirth.Value.Year), PostalCode = model.User.PostalCode, Lastname = model.User.Lastname, Latitude = model.User.Latitude, PoBox = model.User.PoBox, Gender = model.User.Gender, Longtitude = model.User.Longtitude, AvatarId = model.User.AvatarId, Receipt = model.User.Receipts != null && model.User.Receipts.Any() ? model.User.Receipts.Select(r => new Receipt { BlobId = r, UserId = id, Id = Guid.NewGuid() }) .ToList() : null, Mobile = model.User.Mobile, Role = role, Username = username, MaritalStatus = (byte)MaritalStatus.Single, }; var linkUser = new LinkedUser { Id = Guid.NewGuid(), FirstUserId = user.Id, SecondUserId = generalDataService.User.Id, CreationDate = DateTime.Now, RelationType = model.RelationType, LinkStatus = (byte)LinkStatus.Pending }; _repository.Add(user); _repository.Add(linkUser); await _repository.CommitAsync(); return(Result <object> .Successful(user.Id)); });
public async Task <Result <object> > Register([FromQuery] string placeid, [FromQuery] Guid surveyId, AdvanceRegisterModel model) { var placeDetail = await _placeApi.PlaceDetail(placeid); if (placeDetail.Success) { model.User.Province = placeDetail.Data.Item1; model.User.City = placeDetail.Data.Item2; model.User.PostalCode = placeDetail.Data.Item3; model.User.Address = placeDetail.Data.Item4; } var register = await _membershipServiceApi.AuthAuthApiService.Register(model); if (register.Success) { var userId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "Id").Value); var usersurvey = await _userSurveyBiz.GetByUserIdAndSurveyId(userId, model.SurveyId); if (usersurvey.Success) { var userDependentSurvey = new UserDependentSurvey { Id = Guid.NewGuid(), UserSurveyId = usersurvey.Data.Id, TuitionFee = model.User.TuitionFee, UserId = new Guid((string)register.Data) }; _repository.Add(userDependentSurvey); } if (model.User.Assessments != null && model.User.Assessments.Any()) { var id = Guid.NewGuid(); var userAssessmentSurvey = new UserAssessmentSurvey { Id = id, UserId = new Guid((string)register.Data), UserAssessmentBlob = model.User.Assessments.Select(b => new UserAssessmentBlob { Id = Guid.NewGuid(), BlobId = b, UserAssesmentSurveyId = id }).ToList(), UserSurveyId = usersurvey.Data.Id }; _repository.Add(userAssessmentSurvey); } if (model.User.ExtraFiles != null && model.User.ExtraFiles.Any()) { var id = Guid.NewGuid(); var blobs = await _repository.ListAsync <Blob>(b => model.User.ExtraFiles.Contains(b.Id)); blobs.Data.ToList().ForEach(b => b.Title = "Dependent_ExtraFile_" + b.Title); var userAssessmentSurvey = new UserAssessmentSurvey { Id = id, UserId = new Guid((string)register.Data), UserAssessmentBlob = model.User.ExtraFiles.Select(b => new UserAssessmentBlob { Id = Guid.NewGuid(), BlobId = b, UserAssesmentSurveyId = id }).ToList(), UserSurveyId = usersurvey.Data.Id }; _repository.Add(userAssessmentSurvey); await _repository.CommitAsync(); } await _repository.CommitAsync(); return(Result <object> .Successful()); } return(Result <object> .Failed(register.Error)); }
public Task <Result <object> > Register(AdvanceRegisterModel model) => _userBiz.Register(model);