Exemple #1
0
        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);
        }
Exemple #3
0
        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);
        }