예제 #1
0
        public void PostCampaignrulesTest()
        {
            // TODO: add unit test for the method 'PostCampaignrules'
            CampaignRule body     = null; // TODO: replace null with proper value
            var          response = instance.PostCampaignrules(body);

            Assert.IsInstanceOf <CampaignRule> (response, "response is CampaignRule");
        }
예제 #2
0
        public void PutCampaignrulesCampaignruleIdTest()
        {
            // TODO: add unit test for the method 'PutCampaignrulesCampaignruleId'
            string       campaignRuleId = null; // TODO: replace null with proper value
            CampaignRule body           = null; // TODO: replace null with proper value
            var          response       = instance.PutCampaignrulesCampaignruleId(campaignRuleId, body);

            Assert.IsInstanceOf <CampaignRule> (response, "response is CampaignRule");
        }
예제 #3
0
        public ActionResult CreateUserReferenceOrder(UserReferenceOrderViewModel data)
        {
            try
            {
                using (MCContext ctx = new MCContext())
                {
                    var userReference = ctx.userReferences
                                        .AsQueryable()
                                        .Include(x => x.campaign)
                                        .Include(x => x.campaign.rules)
                                        .Include(x => x.orders)
                                        .FirstOrDefault(x => x.userId == data.userId);
                    if (userReference == null)
                    {
                        return(new HttpStatusCodeResult(HttpStatusCode.NotFound, "Referans bulunmamaktadır."));
                    }
                    if (userReference.status != Enums.ReferenceStatus.passive)
                    {
                        var activeRule = new CampaignRule();
                        if (userReference.orders.Any())
                        {
                            var usedRules     = userReference.orders.Select(x => x.campaignRuleId).ToList();
                            var existingRules = ctx.campaignRules.Where(x => usedRules.Contains(x.id)).ToList();
                            activeRule = userReference.campaign.rules.Except(existingRules).OrderBy(x => x.index).FirstOrDefault();
                        }
                        else
                        {
                            activeRule = userReference.campaign.rules.OrderBy(x => x.index).FirstOrDefault();
                        }
                        if (activeRule == null)
                        {
                            return(new HttpStatusCodeResult(HttpStatusCode.NotFound, "Kampanya kuralı bulunmamaktadır."));
                        }
                        if (data.orderPrice < activeRule.atLeastPrice)
                        {
                            return(new HttpStatusCodeResult(HttpStatusCode.Conflict, "Sipariş tutarı en az harcama tutarının altındadır."));
                        }
                        var deservedDiscount = activeRule.ruleType == Enums.RuleTypes.amount ? activeRule.count : (data.orderPrice * activeRule.count) / 100;

                        if (ctx.userReferenceOrders.FirstOrDefault(x => x.orderId == data.orderId) == null)
                        {
                            ctx.userReferenceOrders.Add(new UserReferenceOrder()
                            {
                                activationDate   = data.orderDate.AddDays(activeRule.activationDay),
                                orderId          = data.orderId,
                                orderPrice       = data.orderPrice,
                                userReferenceId  = userReference.id,
                                orderState       = Enums.OrderState.paid,
                                deservedDiscount = deservedDiscount,
                                campaignRuleId   = activeRule.id
                            });
                            ctx.SaveChanges();
                            return(new HttpStatusCodeResult(HttpStatusCode.OK, "Sipariş kaydı oluşturulmuştur."));
                        }
                        else
                        {
                            return(new HttpStatusCodeResult(HttpStatusCode.Conflict, "Sipariş kaydı mevcuttur."));
                        }
                    }
                    else
                    {
                        return(new HttpStatusCodeResult(HttpStatusCode.Conflict, "Referans bağlantısı aktif olmadığı için sisteme kayıt atılmamaktadır."));
                    }
                }
            }
            catch (Exception ex)
            {
                ActivityService.LogException(ex);
                return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "İşlem sırasında bir hata oluştu."));
            }
        }
예제 #4
0
 public void Init()
 {
     instance = new CampaignRule();
 }