Beispiel #1
0
        public async Task <ActionResult> PointExch(string id)
        {
            if (ModelState.IsValid)
            {
                var memberInfo = await(from m in AppDbContext.Members
                                       where m.MemberID.Equals(id, StringComparison.InvariantCultureIgnoreCase)
                                       select m)
                                 .FirstOrDefaultAsync();

                if (memberInfo == null)
                {
                    return(HttpNotFound("MemberID is not Exist."));
                }

                MemberPointInfoViewModel pointInfo = await GetMemberPointInfo(memberInfo.MemberID);

                if (pointInfo == null)
                {
                    pointInfo = new MemberPointInfoViewModel
                    {
                        MemberID    = memberInfo.MemberID,
                        PointTotal  = 0,
                        UsablePoint = 0,
                    };
                }

                pointInfo.IDCard     = memberInfo.IDCard;
                pointInfo.MemberName = memberInfo.Name;

                return(Json(pointInfo, JsonRequestBehavior.AllowGet));
            }
            return(JsonMessage.BadRequestJsonResult(ModelState.Values.SelectMany(x => x.Errors)));
        }
Beispiel #2
0
        //[ValidateAntiForgeryToken]
        public async Task <ActionResult> ChangePassword(ChangePasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                var userID = GetCurrentUserID();

                var result = await this.UserManager.ChangePasswordAsync(userID, model.OldPassword, model.NewPassword);

                if (result.Succeeded)
                {
                    var user = await GetCurrentUserAsync();

                    user.ChangedPassword = true;
                    var updateUserResult = await this.UserManager.UpdateAsync(user);

                    if (result.Succeeded)
                    {
                        return(Json("OK", JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        return(JsonMessage.BadRequestJsonResult(updateUserResult.Errors));
                    }
                }
                else
                {
                    return(JsonMessage.BadRequestJsonResult(result.Errors));
                }
            }
            return(JsonMessage.BadRequestJsonResult(ModelState.Values.SelectMany(x => x.Errors)));
        }
Beispiel #3
0
        //[ValidateAntiForgeryToken]
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                // 这不会计入到为执行帐户锁定而统计的登录失败次数中
                // 若要在多次输入错误密码的情况下触发帐户锁定,请更改为 shouldLockout: true
                var result = await this.SignInManager.PasswordSignInAsync(model.UserID, model.Password, model.RememberMe, shouldLockout : false);

                switch (result)
                {
                case SignInStatus.Success:
                    //return RedirectToLocal(returnUrl);
                    ApplicationUser user = await this.UserManager.FindByNameAsync(model.UserID);

                    return(await GetUserInfo(user));

                case SignInStatus.LockedOut:
                    return(View("Lockout"));

                case SignInStatus.RequiresVerification:
                    return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

                case SignInStatus.Failure:
                default:
                    ModelState.AddModelError("", "无效的登录尝试。");
                    return(View(model));
                }
            }
            return(JsonMessage.BadRequestJsonResult(ModelState.Values.SelectMany(x => x.Errors)));
        }
        private async Task <ActionResult> PointRule(MemberPointRule pointRule)
        {
            if (ModelState.IsValid)
            {
                //MemberPointRule pointRule = null;
                if (pointRule.Level0 == null && Request.Form.Count > 0)
                {
                    string v = Request.Form["pointRule"];
                    pointRule = MemberPointRule.fromJson(v);
                }

                if (pointRule == null)
                {
                    return(JsonMessage.BadRequestJsonResult("Cannot parse request context."));
                }

                //MemberPointRule r = JsonConvert.<MemberPointRule>()
                // string bodyStr = GetFromBodyString(Request);
                //MemberPointRule pointRule = MemberPointRule.fromJson(pointRuleValue);
                await AddOrUpdateSetting(SettingName.PointRule.ToString(), "json", pointRule.toJson());

                return(Json("OK"));
            }
            return(JsonMessage.BadRequestJsonResult(ModelState.Values.ToJson()));
        }
Beispiel #5
0
        public ActionResult FindMember(FindMemberViewModel model)
        {
            if (ModelState.IsValid)
            {
                var result = from u in this.AppDbContext.Users
                             join m in this.AppDbContext.Members
                             on u.UserName equals m.MemberID
                             orderby m.RegisterDate descending
                             select new MemberInfoModel
                {
                    MemberID    = m.MemberID,
                    ReferenceID = m.ReferenceMemberID,
                    Name        = m.Name,
                    IDCard      = m.IDCard,
                    Address     = m.Address,
                    Phone       = u.PhoneNumber,
                    Level       = m.Level
                };

                if (string.IsNullOrWhiteSpace(model.MemberID) == false)
                {
                    //OR --> use False
                    var predicate = PredicateBuilder.False <MemberInfoModel>();

                    predicate = predicate.Or(m => m.MemberID != null &&
                                             m.MemberID.StartsWith(model.MemberID));

                    predicate = predicate.Or(m => m.ReferenceID != null && m.ReferenceID.StartsWith(model.MemberID, StringComparison.InvariantCultureIgnoreCase));

                    predicate = predicate.Or(m => m.Name != null && m.Name.IndexOf(model.MemberID, StringComparison.InvariantCultureIgnoreCase) > -1);

                    predicate = predicate.Or(m => m.IDCard != null && m.IDCard.StartsWith(model.MemberID, StringComparison.InvariantCultureIgnoreCase));

                    predicate = predicate.Or(m => m.Phone != null && m.Phone.StartsWith(model.MemberID, StringComparison.InvariantCultureIgnoreCase));

                    result = result.Where(predicate.Compile()).AsQueryable();
                }



                int size = result.Count();

                // paging
                result = result.Skip(model.page * model.PageSize).Take(model.PageSize);

                var items = result.ToList();

                return(Json(new
                {
                    TotalSize = size,
                    Members = items
                }, JsonRequestBehavior.AllowGet));
            }
            return(JsonMessage.BadRequestJsonResult(ModelState.Values.SelectMany(x => x.Errors)));
        }
Beispiel #6
0
        public async Task <ActionResult> PointDetail(string id, int page, int pagesize)
        {
            if (ModelState.IsValid)
            {
                int totalSize = await(from mp in AppDbContext.MemberPoint
                                      where  mp.OwnerMemberID.Equals(id, StringComparison.InvariantCultureIgnoreCase) &&
                                      mp.Type.Equals("FromSale")
                                      select mp.ID
                                      ).CountAsync();

                if (totalSize == 0)
                {
                    return(HttpNotFound("PointDetail is not Exist."));
                }

                var items = (from mp in AppDbContext.MemberPoint
                             join c in AppDbContext.Members on mp.ProductBuyerMemberID equals c.MemberID
                             join p in AppDbContext.Mattress on mp.ProductID equals p.ID
                             join pDesc in AppDbContext.ProductDesc on p.TypeDescID equals pDesc.ID

                             where mp.OwnerMemberID.Equals(id, StringComparison.InvariantCultureIgnoreCase)
                             orderby mp.CreateDate descending
                             select new
                {
                    ProductBuyerID = c.MemberID,
                    ProductBuyerReferenceID = c.ReferenceMemberID,
                    ProductBuyerName = c.Name,
                    ProductType = pDesc.DisplayName,
                    DealDate = mp.DealDate,
                    CreateDate = mp.DealDate,
                    Point = mp.Quantity,
                    CurrentTotalPoint = mp.CurrentTotalQuantity
                });
                var result = await items.Skip(pagesize *page).Take(pagesize).ToListAsync();

                var newResult = (from item in result
                                 select new {
                    ProductBuyerName = item.ProductBuyerName,
                    BuyerRelation = item.ProductBuyerReferenceID.Equals(id) ? "推荐积分" : "合作积分",
                    ProductTypeName = item.ProductType,
                    DealDate = item.DealDate.ToString("yyyy'-'MM'-'dd"),
                    Point = item.Point,
                    CurrentTotalPoint = item.CurrentTotalPoint
                }).ToList();

                return(Json(new
                {
                    TotalSize = totalSize,
                    MemberPointItems = newResult
                }, JsonRequestBehavior.AllowGet));
            }
            return(JsonMessage.BadRequestJsonResult(ModelState.Values.SelectMany(x => x.Errors)));
        }
Beispiel #7
0
        public async Task <ActionResult> ListMattressType()
        {
            if (ModelState.IsValid)
            {
                var items = await this.AppDbContext.ProductDesc.Select(
                    pd => new { ID = pd.ID, Name = pd.DisplayName, Type = pd.Type, Price = pd.Price }
                    ).ToListAsync();

                //if (items.Count() > 0)
                //{
                return(Json(items, JsonRequestBehavior.AllowGet));
                //}
                //else
                //{
                //    return Json(new { ID = "", Name = "", Type = "" });
                //}
            }
            return(JsonMessage.BadRequestJsonResult(ModelState.Values.ToJson()));
        }
        public async Task <ActionResult> PointRule()
        {
            if (ModelState.IsValid)
            {
                SettingViewModel pointRuleSetting = await GetSetting(SettingName.PointRule.ToString());

                if (pointRuleSetting == null)
                {
                    var defaultRule = MemberPointRule.fromJson(null);
                    await PointRule(defaultRule);

                    return(Json(defaultRule, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Json(MemberPointRule.fromJson(pointRuleSetting.Value), JsonRequestBehavior.AllowGet));
                }
            }
            return(JsonMessage.BadRequestJsonResult(ModelState.Values.SelectMany(x => x.Errors)));
        }
        public async Task <ActionResult> PointRule(PointRuleViewModel pointRule)
        {
            if (ModelState.IsValid)
            {
                var rule = new MemberPointRule {
                    Level0 = new LevelRule {
                        SelfRate     = new Amount("%", pointRule.Level0SelfRate),
                        SonRate      = new Amount("%", pointRule.Level0SonRate),
                        GrandsonRate = new Amount("%", pointRule.Level0GrandsonRate),
                    },
                    Level1 = new LevelRule {
                        SelfRate = new Amount("%", pointRule.Level1SelfRate),
                    },
                    AvailableAfter = TimeSpan.FromDays(pointRule.AvailableAfter)
                };

                return(await PointRule(rule));
            }
            return(JsonMessage.BadRequestJsonResult(ModelState.Values.ToJson()));
        }
Beispiel #10
0
        public async Task <ActionResult> Sell(SellToCustomerViewModel model)
        {
            if (ModelState.IsValid)
            {
                var existMattresID = await AppDbContext.Mattress
                                     .Where(m => m.ID.Equals(model.MattressID, StringComparison.InvariantCultureIgnoreCase))
                                     .Take(1)
                                     .Select(m => m.ID)
                                     .FirstOrDefaultAsync();

                if (existMattresID != null)
                {
                    return(JsonMessage.BadRequestJsonResult("MattressID is Exist."));
                }

                var existMattressTypeID = await AppDbContext.ProductDesc
                                          .Where(m => m.ID.Equals(model.MattressTypeID, StringComparison.InvariantCultureIgnoreCase))
                                          .Take(1)
                                          .Select(m => m.ID)
                                          .FirstOrDefaultAsync();

                if (existMattressTypeID == null)
                {
                    return(JsonMessage.BadRequestJsonResult("MattressTypeID is not Exist."));
                }

                var existCustomerID = await AppDbContext.Members
                                      .Where(m => m.MemberID.Equals(model.CustomerID, StringComparison.InvariantCultureIgnoreCase))
                                      .Take(1)
                                      .Select(m => m.MemberID)
                                      .FirstOrDefaultAsync();

                if (existCustomerID == null)
                {
                    return(JsonMessage.BadRequestJsonResult("CustomerID is not Exist."));
                }

                return(await DoSell(model));
            }
            return(JsonMessage.BadRequestJsonResult(ModelState.Values.SelectMany(x => x.Errors)));
        }
Beispiel #11
0
        public async Task <ActionResult> ModifyMember(MemberInfoModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await this.AppDbContext.Users.
                           Where(u => u.UserName.Equals(model.MemberID, StringComparison.InvariantCultureIgnoreCase))
                           .SingleOrDefaultAsync();

                var member = await this.AppDbContext.Members
                             .Where(m => m.MemberID.Equals(model.MemberID, StringComparison.InvariantCultureIgnoreCase))
                             .SingleOrDefaultAsync();

                if (user != null || member != null)
                {
                    if (user != null)
                    {
                        user.PhoneNumber = model.Phone;
                    }

                    if (member != null)
                    {
                        member.Address = model.Address;
                        member.Level   = model.Level;
                    }

                    try
                    {
                        await this.AppDbContext.SaveChangesAsync();
                    }
                    catch (Exception e)
                    {
                        return(JsonMessage.BadRequestJsonResult(e.Message));
                    }
                }
                return(Json("OK", JsonRequestBehavior.AllowGet));
            }
            return(JsonMessage.BadRequestJsonResult(ModelState.Values.SelectMany(x => x.Errors)));
        }
Beispiel #12
0
        public async Task <ActionResult> PointExch(MemberPointInfoViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (model.ExchAmount < 0)
                {
                    return(JsonMessage.BadRequestJsonResult("ExchAmount must be greater than 0."));
                }

                MemberPointInfoViewModel pointInfo = await GetMemberPointInfo(model.MemberID);

                if (pointInfo == null || pointInfo.UsablePoint < model.ExchAmount)
                {
                    return(JsonMessage.BadRequestJsonResult("ExchAmount is greater than UsablePoint."));
                }

                MemberPoint exchPoint = new MemberPoint();
                exchPoint.ID                   = IDGenerator.GetMemberPointIDGenerator(AppDbContext).GetNext();
                exchPoint.OwnerMemberID        = model.MemberID;
                exchPoint.Type                 = "PointExch";
                exchPoint.OperationBy          = this.AppDbContext.FindOrAttachToLocal((await this.GetCurrentUserAsync()).UserName);
                exchPoint.Quantity             = -model.ExchAmount;
                exchPoint.CurrentTotalQuantity = pointInfo.PointTotal;

                this.AppDbContext.MemberPoint.Add(exchPoint);
                this.AppDbContext.SaveChanges();


                MemberPointInfoViewModel newPointInfo = await GetMemberPointInfo(model.MemberID);

                newPointInfo.IDCard     = model.IDCard;
                newPointInfo.MemberName = model.MemberName;
                return(Json(newPointInfo, JsonRequestBehavior.AllowGet));
            }
            return(JsonMessage.BadRequestJsonResult(ModelState.Values.SelectMany(x => x.Errors)));
        }
Beispiel #13
0
        //[AllowAnonymous]
        //[ValidateAntiForgeryToken]
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                Member menberReference = null;
                string refID           = model.ReferenceID;
                if (String.IsNullOrWhiteSpace(refID))
                {
                    var role = this.RoleManager.FindByName("Administrator").Users.FirstOrDefault();

                    var adminUser = (await this.UserManager.FindByIdAsync(role.UserId));
                    if (adminUser != null)
                    {
                        refID = adminUser.UserName;
                    }
                }

                if (String.IsNullOrWhiteSpace(refID) == false)
                {
                    menberReference = await(from m in this.AppDbContext.Members
                                            where m.MemberID.Equals(refID)
                                            select m
                                            ).FirstOrDefaultAsync();
                }

                if (menberReference == null)
                {
                    return(JsonMessage.BadRequestJsonResult("ReferenceID is not exist."));
                }

                var member = new Member
                {
                    MemberID  = IDGenerator.GetMemberIDGenerator(this.AppDbContext).GetNext(),
                    Reference = menberReference,
                    Name      = model.Name,
                    IDCard    = model.CardID,
                    Address   = model.Address,
                    Level     = model.Level
                };

                var user = new ApplicationUser
                {
                    Id          = member.MemberID,
                    UserName    = member.MemberID,
                    MemberInfo  = member,
                    PhoneNumber = model.Phone
                };

                this.AppDbContext.Members.Add(member);

                var result = await this.UserManager.CreateAsync(user, ApplicationUser.IINT_PASSWORD);

                if (result.Succeeded)
                {
                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713
                    // Send an email with this link
                    //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                    //var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Context.Request.Scheme);
                    //await _emailSender.SendEmailAsync(model.Email, "Confirm your account",
                    //    "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>");
                    //await _signInManager.SignInAsync(user, isPersistent: false);
                    //return RedirectToAction(nameof(HomeController.Index), "Home");

                    Session.Remove("NextMemberID");
                    return(JsonMessage.JsonResult(member.MemberID));
                }
                AddErrors(result);
            }

            return(JsonMessage.BadRequestJsonResult(ModelState.Values.SelectMany(x => x.Errors)));
        }
Beispiel #14
0
        private async Task <ActionResult> GetUserInfo(ApplicationUser user)
        {
            try
            {
                if (user == null)
                {
                    return(HttpNotFound());
                }



                var role = (await this.UserManager.GetRolesAsync(user.UserName)).FirstOrDefault();
                UserInfoViewModel menber = null;
                if (user.MemberInfo == null)
                {
                    menber = await(from member in this.AppDbContext.Members
                                   where member.MemberID.Equals(user.UserName)
                                   select new UserInfoViewModel
                    {
                        ID                   = member.MemberID,
                        Name                 = member.Name ?? "",
                        Level                = member.Level ?? "",
                        Role                 = role ?? "",
                        RegisterDate         = member.RegisterDate.ToString("yyyy'-'MM'-'dd"),
                        NeedToChangePassword = user.ChangedPassword == false
                    }).FirstOrDefaultAsync();
                }
                else
                {
                    menber = new UserInfoViewModel
                    {
                        ID                   = user.MemberInfo.MemberID,
                        Name                 = user.MemberInfo.Name ?? "",
                        Level                = user.MemberInfo.Level ?? "",
                        Role                 = role ?? "",
                        RegisterDate         = user.MemberInfo.RegisterDate.ToString("yyyy'-'MM'-'dd"),
                        NeedToChangePassword = user.ChangedPassword == false
                    };
                }

                if (menber == null)
                {
                    return(HttpNotFound());
                }

                MemberPointRule pointRule = await this.GetPointRule();

                menber.SelfPointRate  = pointRule.GetPointRate(menber.Level, LevelRelation.Self).ValueOfNumber;
                menber.Down1PointRate = pointRule.GetPointRate(menber.Level, LevelRelation.Son).ValueOfNumber;
                menber.Down2PointRate = pointRule.GetPointRate(menber.Level, LevelRelation.Grandson).ValueOfNumber;

                menber.Level = GetLevelDisplayName(menber.Level);

                return(JsonMessage.JsonResult(menber));
            }
            catch (Exception e)
            {
                return(JsonMessage.BadRequestJsonResult(new
                {
                    Message = e.Message
                }));
            }
        }
Beispiel #15
0
        public ActionResult MemberRelationDetail(string id)
        {
            if (ModelState.IsValid)
            {
                var children = (from m1 in this.AppDbContext.Members
                                join m2 in this.AppDbContext.Members
                                on m1.MemberID equals m2.ReferenceMemberID
                                join m3 in this.AppDbContext.Members
                                on m2.MemberID equals m3.ReferenceMemberID into lefJ
                                from m4 in lefJ.DefaultIfEmpty()
                                where m1.MemberID.Equals(id, StringComparison.InvariantCultureIgnoreCase)
                                select new
                {
                    SonID = m2.MemberID == null ? "" : m2.MemberID,
                    SonName = m2.Name == null ? "" : m2.Name,
                    GrandSonID = m4.MemberID == null ? "" : m4.MemberID,
                    GrandSonName = m4.Name == null ? "" : m4.Name
                }).ToList();

                /*
                 * var children = new List<MemberRelationViewModel>();
                 * using (var connection = this.AppDbContext.Database.Connection) {
                 *  using (var command = connection.CreateCommand()) {
                 *      command.CommandText = @"SELECT  m2.[MemberID] as sonID,  m2.[Name] as sonName,  m3.[MemberID] as grandsonID , m3.[Name] as grandsonName
                 * from [Members] as m1
                 * join [Members] as m2 on m1.MemberID = m2.ReferenceMemberID
                 * left join [Members] as m3 on m2.MemberID = m3.ReferenceMemberID
                 * where m1.MemberID = @CustomerID";
                 *
                 *      try
                 *      {
                 *          DbParameter p = command.CreateParameter();
                 *          p.DbType = System.Data.DbType.String;
                 *          p.ParameterName = "CustomerID";
                 *          p.Value = id == null ? "" : id;
                 *
                 *          command.Parameters.Add(p);
                 *          connection.Open();
                 *          var r = command.ExecuteReader();
                 *          while (r.Read())
                 *          {
                 *              children.Add(new MemberRelationViewModel
                 *              {
                 *                  SonID = r.IsDBNull(0) ? "" : r.GetString(0),
                 *                  SonName = r.IsDBNull(1) ? "" : r.GetString(1),
                 *                  GrandSonID = r.IsDBNull(2) ? "" : r.GetString(2),
                 *                  GrandSonName = r.IsDBNull(3) ? "" : r.GetString(3)
                 *              });
                 *          }
                 *          r.Close();
                 *      }
                 *      catch (Exception e)
                 *      {
                 *          Console.WriteLine(e);
                 *      }
                 *
                 *  }
                 *
                 * }*/

                var grandSonIDList = children.Where(m => m.GrandSonID != null).Select(m => m.GrandSonID).ToList();
                var posterity      = (from m1 in this.AppDbContext.Members
                                      join m2 in this.AppDbContext.Members
                                      on m1.MemberID equals m2.ReferenceMemberID
                                      where grandSonIDList.Contains(m1.MemberID)
                                      select new
                {
                    ID = m2.MemberID,
                    Name = m2.Name,
                    ReferenceMemberID = m2.ReferenceMemberID
                }
                                      ).ToList();

                var result = children.GroupBy(i => i.SonID).Select((g) => new MemberRelation
                {
                    ID       = g.Key,
                    Name     = g.Select(a => a.SonName).FirstOrDefault(),
                    Children = g.Where(a => string.IsNullOrWhiteSpace(a.GrandSonID) == false).Select(a => new MemberRelation
                    {
                        ID       = a.GrandSonID,
                        Name     = a.GrandSonName,
                        Children = posterity.Where(p => a.GrandSonID.Equals(p.ReferenceMemberID)).Select(p => new MemberRelation {
                            ID   = p.ID,
                            Name = p.Name
                        }).ToList()
                    }).ToList()
                }).ToList();

                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            return(JsonMessage.BadRequestJsonResult(ModelState.Values.SelectMany(x => x.Errors)));
        }