/// <summary>
        /// ویرایش آیتم‌های یک ویژگی
        /// ابتدا مقادیر قبلی را حذف
        /// سپس مقادیر جدید را ثبت میکنیم
        /// </summary>
        /// <param name="featureId">شماره ویژگی </param>
        /// <param name="Items">ایتم‌های جدید</param>
        /// <returns></returns>
        public async Task <SweetAlertExtenstion> UpdateAsync(int featureId, List <string> Items)
        {
            try
            {
                var featureItems = await Entities.Where(x => x.FeatureId == featureId).ToListAsync();

                DbContext.RemoveRange(featureItems);
                // درصورتی که آیتمی را دوباره برای ثبت کاربر ارسال کرده باشد
                if (Items != null && Items.Count > 0)
                {
                    //==========================================
                    List <FeatureItem> newItems = new List <FeatureItem>();
                    //==========================================

                    foreach (var item in Items)
                    {
                        newItems.Add(new FeatureItem()
                        {
                            FeatureId = featureId,
                            Value     = item
                        });
                    }

                    await AddRangeAsync(newItems);
                }

                return(SweetAlertExtenstion.Ok());
            }
            catch
            {
                return(SweetAlertExtenstion.Error());
            }
        }
        /// <summary>
        /// ویرایش یک ویژگی
        /// </summary>
        /// <param name="model"></param>
        /// <param name="vmItems"></param>
        /// <returns></returns>
        public async Task <SweetAlertExtenstion> UpdateAsync(FeatureUpdateViewModel model, FeatureItemsViewModel vmItems)
        {
            try
            {
                var entity = await GetByIdAsync(model.Id);

                entity = (Feature)Mapper.Map(model, entity, typeof(FeatureUpdateViewModel), typeof(Feature));

                if (vmItems != null && vmItems.Items.Count > 0)
                {
                    //ویرایش آیتم‌‌ها
                    await _featureItemRepository.UpdateAsync(model.Id, vmItems.Items);

                    // حذف این ویژگی برای تمام محصولات
                    await _productFeatureRepository.DeleteAsync(model.Id);
                }

                await DbContext.SaveChangesAsync();

                return(SweetAlertExtenstion.Ok());
            }
            catch (Exception e)
            {
                return(SweetAlertExtenstion.Error());
            }
        }
Beispiel #3
0
        public async Task <IActionResult> ChagePassword(ChangePasswordViewModel vm)
        {
            try
            {
                var userId = int.Parse(User.Identity.FindFirstValue(ClaimTypes.NameIdentifier));
                var user   = await _userRepository.GetByConditionAsync(a => a.Id == userId && a.IsActive);

                if (user == null)
                {
                    TempData.AddResult(SweetAlertExtenstion.Error("کاربر گرامی دسترسی شما محدود شده است لطفا با پشتیبانی تماس بگیرید"));

                    return(Redirect("/"));
                }

                var result = await _userManager.ChangePasswordAsync(user, vm.CurrentPassword, vm.NewPassword);

                if (result.Succeeded)
                {
                    TempData.AddResult(SweetAlertExtenstion.Ok("رمز عبور با موفقیت تغییر یافت"));
                    return(Redirect("/"));
                }
            }
            catch (System.Exception)
            {
                TempData.AddResult(SweetAlertExtenstion.Error("خطایی در سایت رخ داده است لطفا با پشتیبانی تماس بگیرید"));
                return(Redirect("/"));
            }

            return(View());
        }
Beispiel #4
0
        /// <summary>
        /// تغییر وضعیت یک فاکتور
        /// در صورتی که فاکتور در در ایتدای کار باشد یعنی پرداخت شده باشد باید در وضعیت ثبت سفارش قرار بگیرد
        /// در غیر اینصورت باید به مرحله بعدی برود
        /// در صورتی که در مرحله تحویل باشد
        /// دیگر نمیتوان وضعیت آن را تغییر داد
        /// </summary>
        /// <param name="shopOrderId"></param>
        /// <returns></returns>
        public async Task <Tuple <SweetAlertExtenstion, ShopOrderStatusSSOT> > SendNextStatus(int shopOrderId)
        {
            var result = await TableNoTracking.Where(x => x.ShopOrderId == shopOrderId).OrderBy(x => x.Date).ToListAsync();

            // حالتی که فاکتور تازه ثبت شده است یعنی به عبارت دیگر پرداخت توسط مشتری انجام شده است
            if (result == null || result.Count == 0)
            {
                return(new Tuple <SweetAlertExtenstion, ShopOrderStatusSSOT>(await this.InsertAsync(new ShopOrderStatusInsertViewModel
                {
                    ShopOrderId = shopOrderId,
                    Status = ShopOrderStatusSSOT.Ordered
                }), ShopOrderStatusSSOT.Ordered));
            }

            var lastStatus = result.LastOrDefault().Status;

            if (lastStatus == ShopOrderStatusSSOT.Delivery)
            {
                return(new Tuple <SweetAlertExtenstion, ShopOrderStatusSSOT>(SweetAlertExtenstion.Error("فاکتور مورد نظر در مرحله تحویل است."), ShopOrderStatusSSOT.Nothing));
            }

            return(new Tuple <SweetAlertExtenstion, ShopOrderStatusSSOT>(await this.InsertAsync(new ShopOrderStatusInsertViewModel {
                ShopOrderId = shopOrderId,
                Status = lastStatus + 1
            }), lastStatus + 1));
        }
        public async Task <IActionResult> EditPassword(UserChangePasswordViewModel vm)
        {
            if (vm.newPassword != vm.conPassword)
            {
                TempData.AddResult(SweetAlertExtenstion.Error("NewPassword and Confirm not equal"));
                return(RedirectToAction("Index"));
            }

            var user = await _userRepository.GetByIdAsync(this.UserId);

            //if (user.PasswordHash == vm.oldPassword)
            //{

            var newVm = new AdminSetPasswordViewModel
            {
                UserId   = this.UserId,
                Password = vm.Password
            };

            var sweetMessage = await _userRepository.AdminChangePassword(newVm);

            TempData.AddResult(sweetMessage);
            //}
            //else
            //{
            //    TempData.AddResult(SweetAlertExtenstion.Error("Old Password is incorect"));
            //}

            return(RedirectToAction("Profile"));
        }
Beispiel #6
0
        public async Task <IActionResult> Update(ProductPackageUpdateViewModel package
                                                 , PackageFeatureInsertViewModel vm
                                                 , List <int> groups
                                                 , IFormFile file)
        {
            if (_productPackageGroupRepository.IsGroupChanged(package.Id, groups))
            {
                await _productPackageDetailsRepostitory.RemoveProductsbyPackageId(package.Id);
            }

            // ویرایش پکیج
            var productId = await _productPackageRepostitory.UpdateAsync(package, file);

            await _productPackageGroupRepository.AddGroupRange(groups, package.Id);

            if (vm.Items != null || vm.Items.Count > 0)
            {
                await _packageUserAnswerRepository.UpdateAnswer(vm, UserId, package.Id);
            }

            TempData.AddResult(SweetAlertExtenstion.Ok());

            // بازگشت به لیست محصولات
            return(Redirect(IndexUrlWithQueryString));
        }
        public async Task <IActionResult> Profile(ProfileViewModel vm)
        {
            var user = await _userRepository.GetByIdAsync(this.UserId);

            #region
            user.UserName           = vm.UserName;
            user.NormalizedUserName = vm.NormalizedUserName;

            user.FirstName = vm.FirstName;
            user.LastName  = vm.LastName;

            user.Email           = vm.Email;
            user.NormalizedEmail = vm.NormalizedEmail;

            user.PhoneNumber = vm.PhoneNumber;
            #endregion

            var result = await _userManager.UpdateAsync(user);

            if (result.Succeeded)
            {
                TempData.AddResult(SweetAlertExtenstion.Ok());
                await _signInManager.RefreshSignInAsync(user);
            }
            else
            {
                TempData.AddResult(SweetAlertExtenstion.Error());
            }

            return(RedirectToAction("Profile"));
        }
Beispiel #8
0
        public async Task <IActionResult> Login(LoginViewModel vm, string redirect)
        {
            var model = _userRepository.TableNoTracking.FirstOrDefault(a => a.UserName == vm.UserName);

            if (model == null)
            {
                TempData.AddResult(SweetAlertExtenstion.Error("کاربری با این نام کاربری یافت نشد!"));

                return(RedirectToAction("Login"));
            }

            var result = await _signInManager.PasswordSignInAsync(model, vm.Password, vm.IsRemember, false);

            if (result.Succeeded)
            {
                // درصورتی که کاربر قبل از لاگین به آدرس صفحه ایی را وارد کرده بود که نیاز به لاگین داشته است
                // در این صورت باید به آن صفحه هدایت شود
                if (!string.IsNullOrEmpty(redirect) && Url.IsLocalUrl(redirect))
                {
                    return(Redirect(redirect));
                }
                else
                {
                    return(RedirectToAction("Index", "Home"));
                }
            }

            TempData.AddResult(SweetAlertExtenstion.Error("کلمه عبور یا نام کاربری نادرست است"));
            return(RedirectToAction("Login"));
        }
Beispiel #9
0
        public async Task <IActionResult> Login(string userName, string password)
        {
            var model = _userRepository.TableNoTracking.FirstOrDefault(a => a.UserName == userName);

            if (model == null)
            {
                TempData.AddResult(SweetAlertExtenstion.Error("کاربری با این نام کاربری یافت نشد!"));
                return(RedirectToAction("Login"));
            }

            if (model.IsActive == false)
            {
                TempData.AddResult(SweetAlertExtenstion.Error("شما فعال نیستید!"));
                return(RedirectToAction("Login"));
            }

            var result = await _signInManager.PasswordSignInAsync(model, password, true, false);

            if (result.Succeeded)
            {
                //await _userRepository.SetUserClaims(userName);
                return(RedirectToAction("Index", "Home"));
            }
            TempData.AddResult(SweetAlertExtenstion.Error("کلمه عبور یا نام کاربری نادرست است"));
            return(RedirectToAction("Index"));
        }
        public async Task <IActionResult> Update(ProductUpdateViewModel product
                                                 , ProductFeatureInsertViewModel vm
                                                 , ProductGalleryViewModel Pics)
        {
            // ثبت محصول
            var productId = await _productRepostitory.UpdateProduct(product, Pics.file);

            vm.ProductId = product.Id;

            if (Pics.oldGallery != null)
            {
                // بررسی گالری عکس گذشته
                await _productGalleryRepository.UpdateRemindedGallery(Pics.oldGallery.Select(x => Convert.ToInt32(x)).ToList(), product.Id);
            }

            if (Pics.galleryImage != null)
            {
                // آپلود گالری
                await _productGalleryRepository.UploadGalley(Pics.galleryImage, productId);
            }

            if (vm.Items != null)
            {
                // ویژگی ها
                await _productFeatureRepository.UpdateFeatureRange(vm);
            }
            // نمایش پیغام
            TempData.AddResult(SweetAlertExtenstion.Ok());

            // بازگشت به لیست محصولات
            return(Redirect(IndexUrlWithQueryString));
        }
        public async Task <IActionResult> ResetPassword(ResetPasswordViewModel vm)
        {
            if (ModelState.IsValid)
            {
                var model = await _userRepository.GetByConditionAsync(a => a.SecurityStamp == vm.Code);

                if (model == null)
                {
                    TempData.AddResult(SweetAlertExtenstion.Error("اطلاعات وارد شده مغایرت دارد"));
                    return(RedirectToAction("Login"));
                }
                var password = _userManager.PasswordHasher.HashPassword(model, vm.NewPassword);

                model.PasswordHash = password;

                _userRepository.Update(model);

                TempData.AddResult(SweetAlertExtenstion.Ok("رمز عبور شما با موفقیت ویرایش شد"));

                return(RedirectToAction("Login"));
            }

            TempData.AddResult(SweetAlertExtenstion.Error("رمز عبور با تکرارش مغایرت دارد"));
            return(RedirectToAction("ResetPassword", new { code = vm.Code }));
        }
        public async Task <SweetAlertExtenstion> UpdateAsync(NewsUpdateViewModel model)
        {
            try
            {
                var entity = await GetByIdAsync(model.Id);

                entity = (News)Mapper.Map(model, entity, typeof(NewsUpdateViewModel), typeof(News));

                #region ذخیره فایل مورد نظر

                if (model.ImageFile != null)
                {
                    //حذف فایل قبلی
                    await MFile.Delete(entity.ImageAddress);

                    // ذخیره فایل جدید
                    entity.ImageAddress = await MFile.Save(model.ImageFile, "Uploads/NewsImages");
                }

                #endregion

                await DbContext.SaveChangesAsync();

                return(SweetAlertExtenstion.Ok());
            }
            catch (Exception e)
            {
                return(SweetAlertExtenstion.Error());
            }
        }
Beispiel #13
0
        public async Task <SweetAlertExtenstion> AddCart(int shopOrderId, int productId, int userId, int count = 1)
        {
            var model = await GetByConditionAsync(a => a.ProductId == productId && a.ShopOrderId == shopOrderId);

            /// درصورتی که این کالا از قبل در سبد خرید این فرد وجود داشته باشد
            /// تنها تعداد آن را به روز رسانی میکنیم
            if (model != null)
            {
                model.Count += count;

                await UpdateAsync(model);

                return(SweetAlertExtenstion.Ok("این محصول قبلا به سبد خرید اضافه شده است و فقط تعداد آن به روز رسانی شد"));
            }

            /// اضافه کردن به فاکتور
            ///
            MapAdd(new ShopProductAddWithShopOrderViewModel()
            {
                ShopOrderId      = shopOrderId,
                ProductId        = productId,
                UserId           = userId,
                Count            = count,
                IsFactorSubmited = true,
            });



            return(SweetAlertExtenstion.Ok());
        }
        public async Task <IActionResult> ResendCode(string phoneNumber)
        {
            var model = _userRepository.TableNoTracking.FirstOrDefault(a => a.PhoneNumber == phoneNumber);

            if (model == null)
            {
                TempData.AddResult(SweetAlertExtenstion.Error("شماره تماس وارد شده معتبر نمی باشد"));

                return(RedirectToAction("AuthorizePhoneNumber", new { sec = model.SecurityStamp }));
            }

            if (model.ExpireTime > DateTime.Now)
            {
                var text = model.ActiveCode.ToPersianNumbers();

                var smsResult = _smsRestClient.SendByBaseNumber(text, model.PhoneNumber, (int)SmsBaseCodeSSOT.Register);
            }
            else
            {
                var activeCode = await _userRepository.GenerateCode(model.Id);

                var smsResult = _smsRestClient.SendByBaseNumber(activeCode.ToPersianNumbers(), model.PhoneNumber, (int)SmsBaseCodeSSOT.Register);
            }

            return(RedirectToAction("AuthorizePhoneNumber", new { sec = model.SecurityStamp }));
        }
Beispiel #15
0
        public async Task <SweetAlertExtenstion> RemoveCart(int id)
        {
            try
            {
                var model = await GetByIdAsync(id);

                var w = new DataLayer.Entities.Warehouse.WarehouseProductCheck
                {
                    Count     = model.Count,
                    Date      = DateTime.Now,
                    ProductId = model.ProductId.Value,
                    TypeSSOt  = DataLayer.SSOT.WarehouseTypeSSOT.In,
                };


                if (model == null)
                {
                    return(SweetAlertExtenstion.Error("اطلاعاتی با این شناسه یافت نشد"));
                }

                Delete(model);

                await _warehouseProductCheckRepository.AddFromShopOrder(w);

                return(SweetAlertExtenstion.Ok());
            }
            catch
            {
                return(SweetAlertExtenstion.Error());
            }
        }
Beispiel #16
0
        /// <summary>
        /// به روز رسانی تعداد آیتم های برای هر محصول در یک فاکتور
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <SweetAlertExtenstion> UpdateCountAllItems(ShopOrderUpdateFromSite model, string title)
        {
            string query = "";

            try
            {
                query += $"update ShopOrder set title = '{title}' where Id = {model.ShopOrderId} ;";


                if (model.ListProducts != null)
                {
                    foreach (var item in model.ListProducts)
                    {
                        query += $"update ShopProduct set Count = {item.Count} where ShopOrderId = {model.ShopOrderId} and ProductId = {item.ProductId} ;";
                    }
                }


                await _connection.QueryAsync(query + "select * from Log");

                return(SweetAlertExtenstion.Ok());
            }
            catch (Exception e)
            {
                return(SweetAlertExtenstion.Error());
            }
        }
        public async Task <SweetAlertExtenstion> SetOfflinePayment(int orderId)
        {
            var model = await _shopOrderRepository.GetByIdAsync(orderId);

            if (model == null)
            {
                return(SweetAlertExtenstion.Error("اطلاعاتی با این شناسه یافت نشد"));
            }


            var orderPayment = await GetByConditionAsync(a => !a.IsOnlinePay && a.ShopOrderId == orderId);

            if (orderPayment == null)
            {
                return(SweetAlertExtenstion.Error("اطلاعات پرداختی با این شناسه فاکتور یافت نشد"));
            }

            #region Set Payment
            orderPayment.IsSuccess   = true;
            orderPayment.SuccessDate = DateTime.Now;

            await UpdateAsync(orderPayment);

            model.IsSuccessed = true;
            model.SuccessDate = DateTime.Now;

            await _shopOrderRepository.UpdateAsync(model);

            #endregion

            return(SweetAlertExtenstion.Ok());
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="vm"></param>
        /// <param name="roleId"></param>
        /// <returns></returns>
        public async Task <SweetAlertExtenstion> UpdateAccessRole(List <UserAccessSubmitViewModel> vm, int roleId)
        {
            try
            {
                if (await RemoveAccessRole(roleId) == false)
                {
                    return(SweetAlertExtenstion.Error());
                }

                foreach (var item in vm)
                {
                    if (!string.IsNullOrEmpty(item.Controller) && item.Actions != null)
                    {
                        await AddAsync(new UsersAccess()
                        {
                            RoleId     = roleId,
                            Actions    = item.Actions != null ? JsonConvert.SerializeObject(item.Actions) : null,
                            Controller = item.Controller
                        });
                    }
                }
                return(SweetAlertExtenstion.Ok());
            }
            catch (Exception e)
            {
                return(SweetAlertExtenstion.Error());
            }
        }
Beispiel #19
0
        /// <summary>
        ///Delete from this table
        /// </summary>
        /// <param name="Id">record number</param>
        /// <returns></returns>
        public async Task <SweetAlertExtenstion> DeleteAsync(int Id)
        {
            try
            {
                var entity = await GetByIdAsync(Id);

                if (!string.IsNullOrEmpty(entity.BookOrSeet))
                {
                    await MFile.Delete(entity.BookOrSeet);
                }

                if (!string.IsNullOrEmpty(entity.BookCover))
                {
                    await MFile.Delete(entity.BookCover);
                }

                DbContext.Remove(entity);
                await DbContext.SaveChangesAsync();

                return(SweetAlertExtenstion.Ok());
            }
            catch
            {
                return(SweetAlertExtenstion.Error());
            }
        }
Beispiel #20
0
        /// <summary>
        /// ثبت یک آیتم در جدول مورد نظر
        /// </summary>
        /// <param name="model">مدلی که از سمت کلاینت در حال پاس دادن آن هستیم</param>
        /// <returns></returns>
        public async Task <SweetAlertExtenstion> UpdateAsync(SlideShowUpdateViewModel model)
        {
            try
            {
                var entity = Mapper.Map <SlideShow>(model);

                #region ذخیره فایل مورد نظر

                if (model.ImageFile != null)
                {
                    //حذف فایل قبلی
                    MFile.Delete(entity.ImgAddress);
                    // ذخیره فایل جدید
                    entity.ImgAddress = MFile.Save(model.ImageFile, "Uploads/SlideShow");
                }

                #endregion

                await UpdateAsync(entity);

                return(SweetAlertExtenstion.Ok());
            }
            catch (Exception e)
            {
                return(SweetAlertExtenstion.Error());
            }
        }
        public async Task <SweetAlertExtenstion> DeleteOrder(int id)
        {
            var model = GetByCondition(a => a.Id == id);

            if (model == null)
            {
                return(SweetAlertExtenstion.Error());
            }

            model.IsDeleted = true;
            Update(model);

            var productIds = DbContext.ShopProduct.Where(x => x.ShopOrderId == id).ToList();
            List <WarehouseProductCheck> items = new List <WarehouseProductCheck>();

            foreach (var item in productIds)
            {
                items.Add(new WarehouseProductCheck
                {
                    Count     = item.Count,
                    Date      = DateTime.Now,
                    ProductId = item.ProductId.Value,
                    TypeSSOt  = DataLayer.SSOT.WarehouseTypeSSOT.In,
                });
            }

            await _warehouseProductCheckRepository.AddFromShopOrder(items);

            return(SweetAlertExtenstion.Ok());
        }
Beispiel #22
0
        /// <summary>
        /// Send project to next step
        /// </summary>
        /// <param name="projectId"></param>
        /// <returns></returns>
        public async Task <SweetAlertExtenstion> SendProject(int projectId)
        {
            try
            {
                var entity = await GetByIdAsync(projectId);

                // زمانی که پروژه در دست ادمین کاستومر هست و منتظر پرداخت است
                // نباید اجازه تغییر وضعیت آن را بدهیم
                if (entity.Status == ProjectStatusSSOT.AdminCustomerShoudPay)
                {
                    if (!entity.IsPayed)
                    {
                        return(SweetAlertExtenstion.Error("Please pay first"));
                    }
                }

                entity.Status = entity.Status + 1;
                await DbContext.SaveChangesAsync();

                return(SweetAlertExtenstion.Ok());
            }
            catch (Exception e)
            {
                return(SweetAlertExtenstion.Error());
            }
        }
        public async Task <SweetAlertExtenstion> InsertTariff(TariffInsertViewModel model)
        {
            var result = model.ToEntity();

            await AddAsync(result);

            return(SweetAlertExtenstion.Ok());
        }
        public async Task <IActionResult> FastPriceEdit(ProductFastPriceEditViewModel vm)
        {
            await _productRepostitory.MapUpdateAsync(vm, vm.Id);

            TempData.AddResult(SweetAlertExtenstion.Ok());

            return(Redirect(IndexUrlWithQueryString));
        }
Beispiel #25
0
        public async Task <IActionResult> ChangeSpecialSell(int id)
        {
            await _productPackageRepostitory.ChangeSpecial(id);

            TempData.AddResult(SweetAlertExtenstion.Ok());

            return(Redirect(IndexUrlWithQueryString));
        }
        public async Task <SweetAlertExtenstion> UpdateTariff(TariffUpdateViewModel model)
        {
            var result = model.ToEntity(await GetByIdAsync(model.Id));

            await UpdateAsync(result);

            return(SweetAlertExtenstion.Ok());
        }
        public async Task <IActionResult> Insert(WarehouseCreateViewModel vm)
        {
            await _warehouseRepository.MapAddAsync(vm);

            TempData.AddResult(SweetAlertExtenstion.Ok());

            return(Redirect(IndexUrlWithQueryString));
        }
        public async Task <IActionResult> Update(KeywordsUpdateViewModel vm)
        {
            await _keywordsRepository.MapUpdateAsync(vm, vm.Id);

            TempData.AddResult(SweetAlertExtenstion.Ok());

            return(RedirectToAction(nameof(Index)));
        }
        public async Task <IActionResult> NewUser(RegisterUserAdminViewModel vm)
        {
            if (vm.Password != vm.RePassword)
            {
                TempData.AddResult(SweetAlertExtenstion.Error("کلمه عبور با تکرار آن یکسان نیست"));
                return(RedirectToAction("Index"));
            }

            var user = AutoMapper.Mapper.Map <Users>(vm);

            user.CreateDate = DateTime.Now;
            user.IsActive   = true;



            // درصورتی که چنین کاربری از قبل وجود نداشته باشد
            var userResult = await _userRepository.GetByConditionAsync(x => x.UserName == vm.UserName);


            if (userResult == null)
            {
                var userResultPhoneNumber = await _userRepository.GetByConditionAsync(x => x.PhoneNumber == vm.PhoneNumber);

                if (userResultPhoneNumber == null)
                {
                    var resultCreatUser = await _userManager.CreateAsync(user, vm.Password);

                    // درصورتیکه کاربر مورد نظر با موفقیت ثبت شد آن را لاگین میکنیم
                    if (resultCreatUser.Succeeded)
                    {
                        TempData.AddResult(SweetAlertExtenstion.Ok());
                        return(RedirectToAction("Index"));
                    }
                }
                else
                {
                    TempData.AddResult(SweetAlertExtenstion.Error("کاربری با این شماره تلفن از قبل وجود دارد"));
                    return(RedirectToAction("Index"));
                }
                //else
                //{
                //    if (resultCreatUser.Errors.Any(a => a.Code.Contains("DuplicateEmail")))
                //    {
                //        ViewBag.ErrorMessages = "ایمیل وارد شده تکراری می باشد";
                //    }

                //    TempData.AddResult(SweetAlertExtenstion.Error("عملیات با خطا مواجه شد لطفا مجددا تلاش نمایید"));
                //    return View(model);
                //}
            }
            else
            {
                TempData.AddResult(SweetAlertExtenstion.Error("چنین کاربری از قبل وجود دارد"));
                return(RedirectToAction("Index"));
            }
            return(RedirectToAction("Index"));
        }
        public async Task <IActionResult> Login(LoginViewModel vm, string redirect)
        {
            if (ModelState.IsValid)
            {
                var model = _userRepository.TableNoTracking.FirstOrDefault(a => a.UserName == vm.UserName || a.PhoneNumber == vm.UserName);

                if (model == null)
                {
                    TempData.AddResult(SweetAlertExtenstion.Error("کاربری با این نام کاربری یافت نشد!"));

                    return(RedirectToAction("Login"));
                }

                var result = await _signInManager.PasswordSignInAsync(model, vm.Password, vm.IsRemember, false);

                if (result.Succeeded)
                {
                    if (model.IsPhoneNumberConfirm == null || model.IsPhoneNumberConfirm == null)
                    {
                        TempData.AddResult(SweetAlertExtenstion.Error("لطفا شماره تلفن خود را تایید کنید!"));

                        await _signInManager.SignOutAsync();

                        return(RedirectToAction("AuthorizePhoneNumber", new { sec = model.SecurityStamp }));
                    }

                    if (model.IsActive == false)
                    {
                        await _signInManager.SignOutAsync();

                        TempData.AddResult(SweetAlertExtenstion.Error("اکانت شما مسدود شده است!"));

                        return(RedirectToAction("Login"));
                    }


                    // درصورتی که کاربر قبل از لاگین به آدرس صفحه ایی را وارد کرده بود که نیاز به لاگین داشته است
                    // در این صورت باید به آن صفحه هدایت شود
                    if (!string.IsNullOrEmpty(redirect))
                    {
                        return(Redirect(redirect));
                    }
                    else
                    {
                        return(RedirectToAction("Index", "Home"));
                    }
                }

                TempData.AddResult(SweetAlertExtenstion.Error("کلمه عبور یا نام کاربری نادرست است"));
                return(RedirectToAction("Login"));
            }

            TempData.AddResult(SweetAlertExtenstion.Error("لطفا اطلاعات را به درستی وارد کنید"));

            return(View());
        }