public dynamic TonKho(ClaimsPrincipal principal) { dynamic result = new ExpandoObject(); var userinfo = ContextProvider.GetUserInfo(principal); try { SessionManager.DoWork(ss => { var lstOrgan = ss.Query <Organization>().ToList(); var lstPromotion = ss.Query <Promotion>().ToList(); var lstGift = ss.Query <Gift>().ToList(); result = ss.Query <Store>().Where(s => s.DepartmentId == userinfo.OrganizationId) .Select(p => new { DepartmentName = ContextProvider.GetOrganizationName(lstOrgan, p.DepartmentId), PromotionName = ContextProvider.GetPromotionName(lstPromotion, p.PromotionId), GiftName = ContextProvider.GiftName(lstGift, p.GiftId), p.Amount, p.UpdatedDate }).ToList(); }); } catch (Exception ex) { Console.WriteLine(ex.Message); } return(result); }
public dynamic Check(string accNo, string json, string phanhe, ClaimsPrincipal principal) { dynamic result = new ExpandoObject(); try { var lstPromotion = new List <PromotionOut>(); var lstCusGift = new List <CustomerGift>(); var cusGift = new CustomerGift(); var userinfo = ContextProvider.GetUserInfo(principal); var infoCusFromCoreBanking = ConvertJson(json); //var infoCusFromCoreBanking = JsonConvert.DeserializeObject<CustomerDTO>(json); SessionManager.DoWork(ss => { var lstUser = ss.Query <User>().ToList(); var now = DateTime.Now; var timeNow = DateTime.ParseExact(new DateTime(now.Year, now.Month, now.Day, 0, 0, 0).ToString("yyyy-MM-dd hh:mm:ss tt"), "yyyy-MM-dd hh:mm:ss tt", CultureInfo.InvariantCulture); var idPromotions = ss.Query <Store>().Where(s => s.DepartmentId == userinfo.Organization.Id && s.Amount > 0).Select(s => s.PromotionId).ToList(); if (idPromotions.Count == 0) { result.MesError = "Hiện không triển khai chương trình khuyến mãi nào."; } var promotions = ss.Query <Promotion>().Where(s => s.StartDate <= timeNow && s.FinishDate >= timeNow && s.Status == 2).ToList(); if (promotions.Count == 0) { result.MesError = "Hiện không triển khai chương trình khuyến mãi nào."; } else { var status = false; foreach (var itm in promotions) { var quaTangKH = new QuaTangKH(); var promotionIdUsed = new Guid(); cusGift = ss.Query <CustomerGift>().SingleOrDefault(s => s.Acctno == accNo && s.Promotion.Id == itm.Id && s.PhanHe == phanhe); if (cusGift != null) { status = true; lstCusGift.Add(cusGift); var gifts = ss.Query <Gift>().Where(s => s.Id == cusGift.Gift.Id).ToList(); promotionIdUsed = cusGift.Promotion.Id; quaTangKH.GiftId = cusGift.Gift.Id.ToString(); quaTangKH.GiftName = ContextProvider.GiftName(gifts, cusGift.Gift.Id); quaTangKH.Num = cusGift.NumGift; var lstQuaTangKH = new List <QuaTangKH>(); lstQuaTangKH.Add(quaTangKH); var promotionOut = new PromotionOut { Id = promotionIdUsed.ToString(), Code = ContextProvider.GetPromotionCode(promotions, promotionIdUsed), Name = ContextProvider.GetPromotionName(promotions, promotionIdUsed), label = ContextProvider.GetPromotionCode(promotions, promotionIdUsed), value = promotionIdUsed.ToString(), FlagTangQua = cusGift.Status, QuaTangKH = lstQuaTangKH }; lstPromotion.Add(promotionOut); } if (idPromotions.Any(a => a == itm.Id)) { var idGP = promotions.Select(s => s.GiftPromotionId).ToList(); var giftIds = ss.Query <GiftPromotion>().Where(s => idGP.Contains(s.GiftPromotionId)).Select(s => s.GiftId).ToList(); var gift = ss.Query <Gift>().Where(s => giftIds.Contains(s.Id)).ToList(); if (promotionIdUsed.ToString() != Constants.GUIDE_TYPE_NULL) { if (itm.Id != promotionIdUsed) { var lstQuaTangKH = new List <QuaTangKH>(); if (infoCusFromCoreBanking.FRDATE >= itm.StartDate && infoCusFromCoreBanking.FRDATE <= itm.FinishDate) { var configPromotion = JsonConvert.DeserializeObject <List <ConfigPromotion> >(itm.ConfigPromotion.ToString()); foreach (var itmConfigPromotion in configPromotion) { if (string.IsNullOrEmpty(phanhe)) { phanhe = "DEFAULT"; } if (infoCusFromCoreBanking.TERM >= decimal.Parse(itmConfigPromotion.kyhantoithieu) && infoCusFromCoreBanking.BALANCE >= decimal.Parse(itmConfigPromotion.sodutoithieu) && itmConfigPromotion.phanhe.ToUpper() == phanhe.ToUpper()) { infoCusFromCoreBanking.PhanHe = phanhe.ToUpper(); var dataGift = itmConfigPromotion.dataKhaiBaoQuaTang; if (dataGift == null) { result.MesError = "Chưa thiết lập nguyên tắc tặng quà."; } else { lstQuaTangKH = CreateLstGift(dataGift, gift, infoCusFromCoreBanking); } } } } if (lstQuaTangKH.Count > 0) { lstPromotion.Add(CreateCardPromotion(itm, lstQuaTangKH)); } } } else { var lstQuaTangKH = new List <QuaTangKH>(); if (infoCusFromCoreBanking.FRDATE >= itm.StartDate && infoCusFromCoreBanking.FRDATE <= itm.FinishDate) { var configPromotion = JsonConvert.DeserializeObject <List <ConfigPromotion> >(itm.ConfigPromotion.ToString()); foreach (var itmConfigPromotion in configPromotion) { if (string.IsNullOrEmpty(phanhe)) { phanhe = "DEFAULT"; } if (infoCusFromCoreBanking.TERM >= decimal.Parse(itmConfigPromotion.kyhantoithieu) && infoCusFromCoreBanking.BALANCE >= decimal.Parse(itmConfigPromotion.sodutoithieu) && itmConfigPromotion.phanhe.ToUpper() == phanhe.ToUpper()) { infoCusFromCoreBanking.PhanHe = phanhe.ToUpper(); var dataGift = itmConfigPromotion.dataKhaiBaoQuaTang; if (dataGift == null) { result.MesError = "Chưa thiết lập nguyên tắc tặng quà."; } else { lstQuaTangKH = CreateLstGift(dataGift, gift, infoCusFromCoreBanking); } } } } if (lstQuaTangKH.Count > 0) { lstPromotion.Add(CreateCardPromotion(itm, lstQuaTangKH)); } } } } if (lstCusGift.Count == 0) { lstCusGift.Add(infoCusFromCoreBanking); } result.InfoCus = LstCustomer(lstCusGift, phanhe, lstUser); result.LstPromotion = lstPromotion.ToList().OrderByDescending(o => o.CountPrice).ToList(); result.Status = status; } }); } catch (Exception ex) { throw; } return(result); }
public List <BaoCaoQuaTangDTO> GetDataReport(ClaimsPrincipal principal, string productId, string idPromotion, string fromDate, string toDate) { var result = new List <BaoCaoQuaTangDTO>(); SessionManager.DoWork(ss => { try { var _fromDate = DateTime.ParseExact(fromDate + " 00:00:00,000", "yyyy-MM-dd HH:mm:ss,fff", System.Globalization.CultureInfo.InvariantCulture); var _toDate = DateTime.ParseExact(toDate + " 00:00:00,000", "yyyy-MM-dd HH:mm:ss,fff", System.Globalization.CultureInfo.InvariantCulture); var userinfo = ContextProvider.GetUserInfo(principal); var promotion = ss.Query <Promotion>().ToList(); var organization = ss.Query <Organization>().ToList(); var tranfer = ss.Query <TransferGift>().Where(s => s.Status == 2 && s.CreatedDate <= _toDate.AddDays(1) && s.CreatedDate >= _fromDate).ToList(); if (productId != null) { tranfer = tranfer.Where(s => s.Product.Id == new Guid(productId)).ToList(); } if (userinfo.OrganizationCode != "QLBH" && userinfo.UserName != "admin" && userinfo.UserName != "nva") { //Nếu là LD CN/PGD if (userinfo.Position.IsLeader) { tranfer = tranfer.Where(s => s.DepartmentId == userinfo.Organization.Id).ToList(); } else//CV CN/PGD { tranfer = tranfer.Where(s => s.CreatedBy == userinfo.Id).ToList(); } } if (idPromotion != null && productId.ToUpper() != "7A452975-E667-41CB-9B32-5875D357FF37") { tranfer = tranfer.Where(s => s.PromotionId == new Guid(idPromotion)).ToList(); } var lstTranferId = tranfer.Select(s => s.Id); var tranferDetail = ss.Query <TransferDetail>().Where(s => lstTranferId.Contains(s.TransferGift.Id)).ToList(); var gifts = ss.Query <Gift>().ToList(); var lstGift = (from _tranfer in tranfer join _tranferDetail in tranferDetail on _tranfer.Id equals _tranferDetail.TransferGift.Id join _gifts in gifts on _tranferDetail.GiftId equals _gifts.Id select new BaoCaoQuaTangDTO { Amount = _tranferDetail.Amount, ReceivingDepartment = ContextProvider.GetOrganizationName(organization, _tranferDetail.ReceivingDepartment), ReceivingPromotion = ContextProvider.GetPromotionName(promotion, _tranferDetail.ReceivingPromotion), CreatedDate = ContextProvider.GetConvertDatetime(_tranfer.CreatedDate), TranferDepartment = ContextProvider.GetOrganizationName(organization, _tranfer.DepartmentId), Code = _gifts.Code, Name = _gifts.GiftGroup.OptionGift.Name + " - " + _gifts.GiftGroup.Name + " - " + _gifts.Name, UnitName = _gifts.Unit.Name, Price = _gifts.Price.ToString("f0"), GiftGroupId = _gifts.GiftGroup.Id.ToString(), GroupName = _gifts.GiftGroup.Name, OptionGiftId = _gifts.GiftGroup.OptionGift.Id.ToString(), OptionGiftName = _gifts.GiftGroup.OptionGift.Name, OrderByDate = ContextProvider.GetOrderDatetime(_tranfer.CreatedDate) }).OrderBy(pp => pp.Name).OrderBy(p => p.GroupName).OrderBy(pp => pp.OptionGiftName).OrderByDescending(pp => pp.OrderByDate); result = lstGift.ToList(); } catch (Exception ex) { Console.WriteLine(ex.Message); } }); return(result); }
public dynamic LstKhachHangNhanQua(string phanhe, string acctno, string promotionId, int pageNo, int pageSize, ClaimsPrincipal principal) { dynamic result = new ExpandoObject(); try { SessionManager.DoWork(s => { var userinfo = ContextProvider.GetUserInfo(principal); var typeUser = ContextProvider.CheckPermission(userinfo.PermisionId); var lstPromotion = s.Query <Promotion>().ToList(); var lstUser = s.Query <User>().ToList(); var idUsers = lstUser.Where(w => w.Organization.Id == userinfo.Organization.Id).Select(u => u.Id).ToList(); var list = s.Query <CustomerGift>().Where(w => (idUsers.Contains(w.USERID) && typeUser != 1 && typeUser != 2) || typeUser == 1 || typeUser == 2).ToList(); if (!string.IsNullOrEmpty(phanhe)) { list = list.Where(p => p.PhanHe == phanhe).ToList(); } if (!string.IsNullOrEmpty(acctno)) { list = list.Where(p => p.Acctno == acctno).ToList(); } if (!string.IsNullOrEmpty(promotionId)) { list = list.Where(p => p.Promotion.Id == new Guid(promotionId)).ToList(); } var cus = list.GroupBy(p => new { PromotionId = p.Promotion.Id, p.ParentId, p.CusId, p.PhanHe, p.Acctno, p.CusName, p.TERM, p.TERMCD, p.BALANCE, p.CCYCD, p.FRDATE, p.NgayDuyet, p.NguoiDuyet, p.Status, p.CREATEDBy, p.CREATEDDATE }).Select(p => new { Id = p.Key.ParentId, p.Key.CusId, p.Key.PhanHe, p.Key.Acctno, p.Key.PromotionId, PromotionName = ContextProvider.GetPromotionName(lstPromotion, p.Key.PromotionId), NumGift = p.Sum(t => t.NumGift), p.Key.CusName, p.Key.TERM, p.Key.TERMCD, p.Key.BALANCE, p.Key.CCYCD, FRDATE = ContextProvider.GetConvertDatetime(p.Key.FRDATE), NgayDuyet = ContextProvider.GetConvertDatetime(p.Key.NgayDuyet), NguoiDuyet = ContextProvider.GetFullName(lstUser, p.Key.NguoiDuyet), p.Key.Status, CREATEDBy = ContextProvider.GetFullName(lstUser, p.Key.CREATEDBy), CREATEDDATE = ContextProvider.GetConvertDatetime(p.Key.CREATEDDATE), }).ToList(); result.Cus = cus.Skip((pageNo - 1) * pageSize).Take(pageSize).ToList(); var total = cus.Count(); result.TotalPage = total % pageSize == 0 ? total / pageSize : total / pageSize + 1; }); } catch (Exception) { throw; } return(result); }