Beispiel #1
0
        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
            });
        }
Beispiel #2
0
        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
            }));
        }