public async Task <IResponse <Domain.Store> > SignUp(StoreSignUpModel model) { using var tb = _appUow.Database.BeginTransaction(); var mobileNumber = long.Parse(model.MobileNumber); var user = await _appUow.UserRepo.FirstOrDefaultAsync(conditions : x => x.MobileNumber == mobileNumber, null); var store = await _storeRepo.FirstOrDefaultAsync(conditions : x => x.Username == model.Username, null); if (store != null) { return new Response <Domain.Store> { Message = ServiceMessage.DuplicateRecord } } ; var cdt = DateTime.Now; store = new Domain.Store { Username = model.Username, //FolowerCount = crawl.FolowerCount, //FolowingCount = crawl.FolowingCount, StoreType = StoreType.Instagram, StoreStatus = StoreStatus.Register, ProfilePictureUrl = null, //crawl.ProfilePictureUrl, LastCrawlTime = null, //crawl.LastCrawlDate, FullName = model.StoreName, //crawl.FullName, IsActive = true, User = user ?? new User { FullName = model.FullName, IsActive = true, MobileNumber = mobileNumber, LastLoginDateMi = cdt, LastLoginDateSh = PersianDateTime.Now.ToString(PersianDateTimeFormat.Date), InsertDateMi = cdt, Password = HashGenerator.Hash(mobileNumber.ToString()), NewPassword = HashGenerator.Hash(mobileNumber.ToString()), MustChangePassword = false, UserStatus = UserStatus.AddStore } }; await _storeRepo.AddAsync(store); var saveStore = await _appUow.ElkSaveChangesAsync(); if (!saveStore.IsSuccessful) { tb.Rollback(); return(new Response <Domain.Store> { Message = saveStore.Message }); } if (user == null) { await _authUow.UserInRoleRepo.AddAsync(new UserInRole { UserId = store.UserId, RoleId = model.StoreRoleId ?? 0 }); var saveUserInRole = await _authUow.ElkSaveChangesAsync(); if (!saveUserInRole.IsSuccessful) { tb.Rollback(); } else { tb.Commit(); } return(new Response <Domain.Store> { IsSuccessful = saveUserInRole.IsSuccessful, Result = store, Message = saveStore.Message }); } tb.Commit(); return(new Response <Domain.Store> { IsSuccessful = true, Result = store }); }
public async Task <IActionResult> Submit([FromBody] StoreSignUpModel model) { if (!ModelState.IsValid) { return(Json(new Response <string> { IsSuccessful = false, Message = ModelState.GetModelError() })); } using var pageInfoHttp = new HttpClient(); var callGetPageInfo = await pageInfoHttp.GetAsync($"{_configuration["CustomSettings:Crawler:GetPage"]}?username={model.Username}"); if (!callGetPageInfo.IsSuccessStatusCode) { return(Json(new Response <string> { Message = Strings.Error })); } var crawl = (await callGetPageInfo.Content.ReadAsStringAsync()).DeSerializeJson <Response <CrawledPageDto> >(); using var postsHttp = new HttpClient(); var callAddPosts = await postsHttp.PostAsync($"{_configuration["CustomSettings:Crawler:AddPosts"]}?username={model.Username}", null); if (!callAddPosts.IsSuccessStatusCode) { return(Json(new Response <string> { Message = Strings.Error })); } var addPosts = (await callAddPosts.Content.ReadAsStringAsync()).DeSerializeJson <Response <bool> >(); if (!addPosts.IsSuccessful) { return(Json(new Response <string> { Message = addPosts.Message })); } model.StoreRoleId = int.Parse(_configuration["CustomSettings:StoreRoleId"]); var signup = await _storeSrv.SignUp(model); if (!signup.IsSuccessful) { return(Json(new Response <string> { IsSuccessful = signup.IsSuccessful, Message = signup.Message })); } var menuRep = _userSrv.GetAvailableActions(signup.Result.UserId, null, _configuration["CustomSettings:UrlPrefix"]); if (menuRep == null) { return(Json(new Response <string> { IsSuccessful = false, Message = Strings.ThereIsNoViewForUser })); } await CreateCookie(signup.Result.User, false); return(Json(new Response <string> { Result = Url.Action(menuRep.DefaultUserAction.Action, menuRep.DefaultUserAction.Controller, new { }), IsSuccessful = signup.IsSuccessful, Message = signup.Message })); }