Example #1
0
        public void CreateTwoYearAnniversaryEntrySuccess()
        {
            var prizes = new List <TwoYearAnniversaryInstantPrizeSetting>()
            {
                new TwoYearAnniversaryInstantPrizeSetting {
                    Date = new DateTime(2018, 3, 29), PrizeType = TwoYearAnniversarInstantPrizeType.StarBucks, Rate = 0.0f, TotalCount = 1, WinnerCount = 0, StartTime = 12
                },
                new TwoYearAnniversaryInstantPrizeSetting {
                    Date = new DateTime(2018, 3, 29), PrizeType = TwoYearAnniversarInstantPrizeType.AtKidsBagPack, Rate = 1.0f, TotalCount = 1, WinnerCount = 0, StartTime = 12
                },
                new TwoYearAnniversaryInstantPrizeSetting {
                    Date = new DateTime(2018, 3, 29), PrizeType = TwoYearAnniversarInstantPrizeType.OriginalBag, Rate = 1.0f, TotalCount = 1, WinnerCount = 0, StartTime = 12
                },
                new TwoYearAnniversaryInstantPrizeSetting {
                    Date = new DateTime(2018, 3, 29), PrizeType = TwoYearAnniversarInstantPrizeType.Coupon_20, Rate = 1.0f, TotalCount = 1, WinnerCount = 0, StartTime = 12
                },
                new TwoYearAnniversaryInstantPrizeSetting {
                    Date = new DateTime(2018, 3, 29), PrizeType = TwoYearAnniversarInstantPrizeType.LineFriendsCarrier, Rate = 1.0f, TotalCount = 1, WinnerCount = 0, StartTime = 12
                }
            };
            var user = new TwoYearAnniversaryEntry {
            };

            user = null;
            var entry = new TwoYearAnniversaryEntry
            {
                Id          = 1,
                CreateDate  = new DateTime(2018, 3, 29),
                IpAddress   = "127.0.0.1",
                SamsoniteId = "pentacleId123",
                PrizeType   = TwoYearAnniversarInstantPrizeType.StarBucks,
                Channel     = Domain.Entities.Abstract.ChannelType.PC
            };

            entryRepo.Setup(x => x.SingleOrDefault(It.IsAny <Expression <Func <TwoYearAnniversaryEntry, bool> > >())).Returns(user);
            entryRepo.Setup(x => x.Any(It.IsAny <Expression <Func <TwoYearAnniversaryEntry, bool> > >())).Returns(false);
            settingRepo.Setup(x => x.Filter(It.IsAny <Expression <Func <TwoYearAnniversaryInstantPrizeSetting, bool> > >())).Returns(prizes.AsQueryable());
            settingRepo.Setup(x => x.SingleOrDefault(It.IsAny <Expression <Func <TwoYearAnniversaryInstantPrizeSetting, bool> > >())).Returns(prizes[1]);
            var list = new List <TwoYearAnniversaryEntry>();

            entryRepo.Setup(x => x.Filter(It.IsAny <Expression <Func <TwoYearAnniversaryEntry, bool> > >())).Returns(list.AsQueryable());
            entryRepo.Setup(x => x.Add(It.IsAny <TwoYearAnniversaryEntry>())).Returns(entry);

            //action
            var result = service.CreateTwoYearAnniversaryEntry(entry);

            //assert
            Assert.NotNull(result);
            Assert.Equal(result.PrizeType, TwoYearAnniversarInstantPrizeType.AtKidsBagPack);
            entryRepo.Verify(x => x.SingleOrDefault(It.IsAny <Expression <Func <TwoYearAnniversaryEntry, bool> > >()), Times.Once);
            entryRepo.Verify(x => x.Any(It.IsAny <Expression <Func <TwoYearAnniversaryEntry, bool> > >()), Times.Once);
            settingRepo.Verify(x => x.Filter(It.IsAny <Expression <Func <TwoYearAnniversaryInstantPrizeSetting, bool> > >()), Times.Once);
            settingRepo.Verify(x => x.SingleOrDefault(It.IsAny <Expression <Func <TwoYearAnniversaryInstantPrizeSetting, bool> > >()), Times.Once);
            entryRepo.Verify(x => x.Filter(It.IsAny <Expression <Func <TwoYearAnniversaryEntry, bool> > >()), Times.Once);
            settingRepo.Verify(x => x.Update(It.IsAny <TwoYearAnniversaryInstantPrizeSetting>()), Times.Once);
            entryRepo.Verify(x => x.Add(It.IsAny <TwoYearAnniversaryEntry>()), Times.Once);
            entryRepo.Verify(x => x.Save(), Times.Once);
        }
Example #2
0
        public ActionResult CreateTwoYearAnniversaryEntry(TwoYearCustNoModel custNoModel)
        {
            try
            {
                if (common.Now >= new DateTime(2018, 4, 19))
                {
                    throw new TwoYearAnniversaryServiceException("400", "이벤트가 종료되었습니다.", null);
                }

                if (string.IsNullOrEmpty(custNoModel.TwoYearCustNo))
                {
                    throw new TwoYearAnniversaryServiceException("400", "쌤소나이트에 로그인 후 시도해주세요.", null);
                }

                var encrytionId = custNoModel.TwoYearCustNo;
                var samsoniteId = decrypt(encrytionId);
                //string samsoniteId= Session["TwoAnniversarySamsoniteId"] as string;
                var entry = new TwoYearAnniversaryEntry()
                {
                    SamsoniteId           = encrytionId,
                    SamsoniteEncryptionId = samsoniteId,
                    CreateDate            = common.Now,
                    Channel   = common.IsMobileDevice ? Domain.Entities.Abstract.ChannelType.Mobile : Domain.Entities.Abstract.ChannelType.PC,
                    IpAddress = common.IpAddress
                };

                var user = service.CreateTwoYearAnniversaryEntry(entry);

                var coupon = service.UpdateTwoYearAnniversaryWinCoupon(user.Id);

                if (coupon != null)
                {
                    var couponUrl = ConfigurationManager.AppSettings["samsonite.coupon.url"] as string;

                    string         url            = string.Format(couponUrl + "?custNo={0}&coupon={1}", user.SamsoniteId, coupon.CouponCode);
                    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
                    httpWebRequest.Method = "GET";
                    //httpWebRequest.ContentType = "application/x-www-form-urlencoded";
                    // 실서버 반영시 주석 해제
                    using (HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse()) { }
                }


                var model = new TwoYearAnniversaryViewModel()
                {
                    PrizeType    = user.PrizeType,
                    RouletteType = 4,
                    PrizeName    = "wlaossdefr",
                };

                /*
                 *  - 서버 룰렛 순서 = ["1만원쿠폰","스타벅스 기프티콘",  "키즈백팩", "쌤소나이트 정품가방", "20만원쿠폰", "라인프렌즈 콜라보 캐리어"]
                 *  - 뷰단 룰렛 순서 = ["라인프렌즈 콜라보 캐리어", "20만원쿠폰", "키즈백팩", "스타벅스 기프티콘", "1만원쿠폰", "쌤소나이트 정품가방"]
                 */
                switch (user.PrizeType)
                {
                case TwoYearAnniversarInstantPrizeType.Loser:
                default:
                    model.PrizeName    = "wlaossdefr";
                    model.RouletteType = 4;
                    break;

                case TwoYearAnniversarInstantPrizeType.StarBucks:
                    model.PrizeName    = "wzzxjcvvl";
                    model.RouletteType = 3;
                    break;

                case TwoYearAnniversarInstantPrizeType.AtKidsBagPack:
                    model.PrizeName    = "wgrfkdqskad";
                    model.RouletteType = 2;
                    break;

                case TwoYearAnniversarInstantPrizeType.OriginalBag:
                    model.PrizeName    = "wtrrkeqwkqd";
                    model.RouletteType = 5;
                    break;

                case TwoYearAnniversarInstantPrizeType.Coupon_20:
                    model.PrizeName    = "wlzknjvhhgs";
                    model.RouletteType = 1;
                    break;

                case TwoYearAnniversarInstantPrizeType.LineFriendsCarrier:
                    model.PrizeName    = "wmznobfvlcdxj";
                    model.RouletteType = 0;
                    break;
                }

                return(Json(new
                {
                    result = true,
                    data = model
                }));
            }
            catch (TwoYearAnniversaryServiceException e)
            {
                return(Json(new
                {
                    result = false,
                    message = e.Message
                }));
            }
            catch (Exception e)
            {
                return(Json(new
                {
                    result = false,
                    message = "서비스 점검중입니다. 잠시 후 시도해보시거나, 담당자에게 문의하시기 바랍니다."
                }));
            }
        }