public async Task <IActionResult> Signup([Bind("MobileNumber,Name,Password,ConfirmPassword,ImageFile")] UserSignupViewModel user)
        {
            if (User.Identity.IsAuthenticated)
            {
                return(Redirect("/"));
            }

            if (ModelState.IsValid)
            {
                if (user.Password != user.ConfirmPassword)
                {
                    ViewBag.Message = "کلمه عبور و تکرار آن یکسان نیست";
                    return(View("ShowMessage"));
                }

                RequestUserSignupDto request = new RequestUserSignupDto()
                {
                    ImageFile    = user.ImageFile,
                    MobileNumber = user.MobileNumber,
                    Name         = user.Name,
                    Password     = user.Password
                };
                var result = await _usersFacad.UserSignupService.Execute(request);

                switch (result.Status)
                {
                case ServiceStatus.Success:
                    await HttpContext.LoginToSiteAsync(result.Data.UserId, user.MobileNumber, user.Name, UserInRole.User);

                    ViewBag.Message = "حساب شما با موفقیت ایجاد شد";
                    break;

                case ServiceStatus.SystemError:
                    ViewBag.Message = "مشکلی در سیستم پیش آمد";
                    break;

                case ServiceStatus.NotFound:
                    return(NotFound());

                case ServiceStatus.SaveFileError:
                    ViewBag.Message = "مشکلی در ذخیره فایل پیش آمد";
                    break;

                case ServiceStatus.Error:
                    ViewBag.Message = result.Message;
                    break;
                }
                return(View("ShowMessage"));
            }
            return(View(user));
        }
Example #2
0
        public async Task <ResultDto <ResultUserSignup> > Execute(RequestUserSignupDto request)
        {
            return(await Task.Run(async() =>
            {
                if (_context.Users.Any(u => u.MobileNumber == request.MobileNumber))
                {
                    return new ResultDto <ResultUserSignup>()
                    {
                        Status = ServiceStatus.Error,
                        Message = "این شماره قبلا ثبت شده است!!"
                    };
                }


                try
                {
                    User newUser = new User()
                    {
                        MobileNumber = request.MobileNumber,
                        Name = request.Name,
                        Password = await request.Password.ToHashedAsync(),
                        InsertTime = DateTime.Now,
                        LastOnline = DateTime.Now,
                        UserInRole = UserInRole.User,
                        HashKey = await Guid.NewGuid().ToString().ToHashedAsync()
                    };

                    await _context.Users.AddAsync(newUser);

                    #region --Save Image--
                    if (request.ImageFile != null)
                    {
                        var upResult = await request.ImageFile.UploadFileAsync("Images/UserImages/", _environment);
                        if (upResult.Status)
                        {
                            var newImage = new UserImage()
                            {
                                ImageName = upResult.FileNameAddress,
                                User = newUser,
                                UserId = newUser.Id,
                                InsertTime = DateTime.Now,
                            };

                            await _context.UserImages.AddAsync(newImage);
                        }
                        else
                        {
                            return new ResultDto <ResultUserSignup>()
                            {
                                Status = ServiceStatus.SaveFileError,
                            };
                        }
                    }
                    #endregion



                    await _context.SaveChangesAsync();

                    return new ResultDto <ResultUserSignup>()
                    {
                        Data = new ResultUserSignup()
                        {
                            UserId = newUser.Id,
                        },
                        Status = ServiceStatus.Success
                    };
                }
                catch (Exception)
                {
                    return new ResultDto <ResultUserSignup>()
                    {
                        Status = ServiceStatus.SystemError
                    };
                }
            }));
        }