public async Task <IActionResult> 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(ErrorMessage.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(ErrorMessage.BadRequestJsonResult(ModelState.Values.SelectMany(x => x.Errors))); }
private async Task <MemberPointRule> GetPointRule() { var ruleSetting = await(from s in this._applicationDbContext.Settings where s.ID.Equals(SettingName.PointRule.ToString(), StringComparison.InvariantCultureIgnoreCase) select s ).FirstOrDefaultAsync(); if (ruleSetting == null) { return(MemberPointRule.Default); } else { return(MemberPointRule.fromJson(ruleSetting.SettingValue)); } }
public async Task <IActionResult> 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)); } else { return(Json(MemberPointRule.fromJson(pointRuleSetting.Value))); } } return(ErrorMessage.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())); }
private async Task <SellMemberPointViewModel> AddMemberPoint(SaleToCustomerDetail saleToCustomerDetail) { MemberPointRule pointRule = await this.GetPointRule(); // Left JOIN /* * var customers = await (from m1 in _applicationDbContext.Members * join m2 in _applicationDbContext.Members * on m1.ReferenceMemberID equals m2.MemberID * select new { * MemberID = m1.MemberID, * MemberName = m1.Name, * MemberLevel = m1.Level, * * Up1ID = m2.MemberID, * Up1Name = m2.Name, * Up1Level = m2.Level, * Up1ReferenceMemberID = m2.ReferenceMemberID * } into M12 * join m3 in _applicationDbContext.Members * on M12.Up1ReferenceMemberID equals m3.MemberID into M23 * from m5 in M23.DefaultIfEmpty() * where M12.MemberID.Equals(saleToCustomerDetail.Sale.Customer.MemberID, * StringComparison.InvariantCultureIgnoreCase) * select new SellMemberPointViewModel * { * MemberID = M12.MemberID, * MemberName = M12.MemberName, * MemberLevel = M12.MemberLevel, * * Up1ID = M12.Up1ID, * Up1Name = M12.Up1Name, * Up1Level = M12.Up1Level, * * Up2ID = m5.MemberID, * Up2Name = m5.Name, * Up2Level = m5.Level, * }).FirstOrDefaultAsync(); * */ var customers = GetCustomersFromSqlCommand(_applicationDbContext.Database.AsRelational(), saleToCustomerDetail.Sale.Customer.MemberID); if (customers == null) { return(new SellMemberPointViewModel { MemberID = "", MemberName = "", MemberLevel = "", Up1ID = "", Up1Name = "", Up1Level = "", Up2ID = "", Up2Name = "", Up2Level = "" }); } if (string.IsNullOrWhiteSpace(customers.MemberID) == false) { MemberPoint menberPoint = new MemberPoint(saleToCustomerDetail); menberPoint.Owner = new Member { MemberID = customers.MemberID }; menberPoint.UseableDate = pointRule.CalcAvailableDate(menberPoint.DealDate); menberPoint.Quantity = pointRule.Calc(customers.MemberLevel, LevelRelation.Self, saleToCustomerDetail.Price); menberPoint.ID = IDGenerator.GetMemberPointIDGenerator(this._applicationDbContext).GetNext(); var pointInfo = await GetMemberPointInfo(menberPoint.Owner.MemberID); if (pointInfo != null) { menberPoint.CurrentTotalQuantity = pointInfo.PointTotal; } this._applicationDbContext.MemberPoint.Add(menberPoint); customers.PointCount = menberPoint.Quantity; } if (string.IsNullOrWhiteSpace(customers.Up1ID) == false) { MemberPoint menberPoint = new MemberPoint(saleToCustomerDetail); menberPoint.Owner = new Member { MemberID = customers.Up1ID }; menberPoint.UseableDate = pointRule.CalcAvailableDate(menberPoint.DealDate); menberPoint.Quantity = pointRule.Calc(customers.Up1Level, LevelRelation.Son, saleToCustomerDetail.Price); menberPoint.ID = IDGenerator.GetMemberPointIDGenerator(this._applicationDbContext).GetNext(); var pointInfo = await GetMemberPointInfo(menberPoint.Owner.MemberID); if (pointInfo != null) { menberPoint.CurrentTotalQuantity = pointInfo.PointTotal; } this._applicationDbContext.MemberPoint.Add(menberPoint); customers.Up1PointCount = menberPoint.Quantity; } if (string.IsNullOrWhiteSpace(customers.Up2ID) == false) { MemberPoint menberPoint = new MemberPoint(saleToCustomerDetail); menberPoint.Owner = new Member { MemberID = customers.Up2ID }; menberPoint.UseableDate = pointRule.CalcAvailableDate(menberPoint.DealDate); menberPoint.Quantity = pointRule.Calc(customers.Up2Level, LevelRelation.Grandson, saleToCustomerDetail.Price); menberPoint.ID = IDGenerator.GetMemberPointIDGenerator(this._applicationDbContext).GetNext(); var pointInfo = await GetMemberPointInfo(menberPoint.Owner.MemberID); if (pointInfo != null) { menberPoint.CurrentTotalQuantity = pointInfo.PointTotal; } this._applicationDbContext.MemberPoint.Add(menberPoint); customers.Up2PointCount = menberPoint.Quantity; } return(customers); }
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 })); } }
private async Task <decimal> AddOneMemberPoint(SaleToCustomerDetail saleToCustomerDetail, MemberPointRule pointRule, string customerID, string customerLevel, LevelRelation relation) { if (string.IsNullOrWhiteSpace(customerID) == false && string.IsNullOrWhiteSpace(customerLevel) == false) { MemberPoint menberPoint = new MemberPoint(saleToCustomerDetail); menberPoint.Owner = this.AppDbContext.FindOrAttachToLocal(customerID); menberPoint.UseableDate = pointRule.CalcAvailableDate(menberPoint.DealDate); menberPoint.Quantity = pointRule.Calc(customerLevel, relation, saleToCustomerDetail.Price - saleToCustomerDetail.CashCoupon); menberPoint.ID = IDGenerator.GetMemberPointIDGenerator(this.AppDbContext).GetNext(); await CalcCurrentTotal(menberPoint); this.AppDbContext.MemberPoint.Add(menberPoint); return(menberPoint.Quantity); } return(0); }
private async Task <SellMemberPointViewModel> AddMemberPoint(SaleToCustomerDetail saleToCustomerDetail) { MemberPointRule pointRule = await this.GetPointRule(); // Left JOIN var customers = await(from m1 in this.AppDbContext.Members join m2 in this.AppDbContext.Members on m1.ReferenceMemberID equals m2.MemberID where m1.MemberID.Equals(saleToCustomerDetail.Sale.Customer.MemberID, StringComparison.InvariantCultureIgnoreCase) select m2 into M01 join m3 in this.AppDbContext.Members on M01.ReferenceMemberID equals m3.MemberID into M02 from m4 in M02.DefaultIfEmpty() select new { MemberID = M01.MemberID, MemberName = M01.Name, MemberLevel = M01.Level, Up1ID = m4.MemberID, Up1Name = m4.Name, Up1Level = m4.Level, Up1ReferenceMemberID = m4.ReferenceMemberID } into M03 join m5 in this.AppDbContext.Members on M03.Up1ReferenceMemberID equals m5.MemberID into M04 from m6 in M04.DefaultIfEmpty() select new SellMemberPointViewModel { MemberID = M03.MemberID, MemberName = M03.MemberName, MemberLevel = M03.MemberLevel, Up1ID = M03.Up1ID, Up1Name = M03.Up1Name, Up1Level = M03.Up1Level, Up2ID = m6.MemberID, Up2Name = m6.Name, Up2Level = m6.Level, }).FirstOrDefaultAsync(); //var customers = GetCustomersFromSqlCommand(AppDbContext.Database.Connection, // saleToCustomerDetail.Sale.Customer.MemberID); if (customers == null) { return(new SellMemberPointViewModel { MemberID = "", MemberName = "", MemberLevel = "", Up1ID = "", Up1Name = "", Up1Level = "", Up2ID = "", Up2Name = "", Up2Level = "" }); } customers.PointCount = await AddOneMemberPoint(saleToCustomerDetail, pointRule, customers.MemberID, customers.MemberLevel, LevelRelation.Self); customers.Up1PointCount = await AddOneMemberPoint(saleToCustomerDetail, pointRule, customers.Up1ID, customers.Up1Level, LevelRelation.Son); customers.Up2PointCount = await AddOneMemberPoint(saleToCustomerDetail, pointRule, customers.Up2ID, customers.Up2Level, LevelRelation.Grandson); return(customers); }