Пример #1
0
        private Guid GetContactId(Dictionary <string, object> requestData)
        {
            if (requestData != null && requestData.ContainsKey("client") && requestData["client"] != null)
            {
                var client      = (requestData["client"] as JObject).ToObject <Dictionary <string, string> >();
                var mobilePhone = client.ContainsKey("mobilePhone") ? client["mobilePhone"] ?? String.Empty : String.Empty;
                var cardNumber  = client.ContainsKey("cardNumber") ? client["cardNumber"] ?? String.Empty : String.Empty;
                var id          = client.ContainsKey("id") ? client["id"] ?? Guid.Empty.ToString() : Guid.Empty.ToString();

                mobilePhone = mobilePhone.Replace("+", String.Empty);

                var provider  = new LoyaltyDBProvider();
                var contactId = provider.ExecuteScalar <Guid>(@"Select ""Id"" from public.""Contact""
					Where
						(""Phone"" = '{0}' and '{0}' <> '')
					or
						(""Id"" = '{1}' and '{1}' <> '00000000-0000-0000-0000-000000000000')
					or
						('{2}' <> '' and (Select COUNT(*) from public.""Card"" Where ""ContactId"" = ""Contact"".""Id"" and ""Number"" = '{2}') > 0)"                        ,
                                                              Guid.Empty, mobilePhone, id, cardNumber);
                return(contactId);
            }

            return(Guid.Empty);
        }
Пример #2
0
        public ActionResult QueryProductSegment(string productId)
        {
            var provider = new LoyaltyDBProvider();
            var query    = @"
				with ProductPromotion as 
				(
					select ps.""Id"" as ""SegmentId"" , ps.""Name"" as ""SegmentName"", p2.""Id"" as ""PromotionId"", p2.""Name"" as ""PromotionName""
					from ""ProductInSegment"" pis 
					inner join ""ProductSegment"" ps on ps.""Id"" = pis.""SegmentId"" 
					inner join ""PurchaseBenefit"" pb on pb.""Discount_SegmentId"" = ps.""Id"" 
					or pb.""FixedPrice_SegmentId"" = ps.""Id"" 
					or pb.""ChargeBonus_PercentCharge_ProductSegmentId"" = ps.""Id"" 
					or pb.""AllowBonusPaymentParams_ProductSegmentId"" = ps.""Id"" 
					inner join ""Promotion"" p2 on p2.""Id"" = pb.""PromotionId""
					where pis.""ProductId"" = '{0}'
					union
					select ps.""Id"" as ""SegmentId"" , ps.""Name"" as ""SegmentName"", p2.""Id"" as ""PromotionId"", p2.""Name"" as ""PromotionName""
					from ""ProductInSegment"" pis 
					inner join ""ProductSegment"" ps on ps.""Id"" = pis.""SegmentId"" 
					inner join ""BenefitCondition"" bc on bc.""SegmentId"" = ps.""Id""
					inner join  ""PurchaseBenefit"" pb on bc.""PurchaseBenefitId"" = pb.""Id""
					inner join ""Promotion"" p2 on p2.""Id"" = pb.""PromotionId""
					where pis.""ProductId"" = '{0}'
				)
				select distinct ""SegmentId"", ""SegmentName"", ""PromotionId"", ""PromotionName"" from ProductPromotion
			"            ;
            var items    = provider.ExecuteSelectQuery(query, ReadProductSegment, productId);

            return(Ok(items));
        }
Пример #3
0
        public ActionResult LoadPack(IEnumerable <BaseProcessingModel> models)
        {
            if (models == null)
            {
                return(BadRequest("Ошибка передачи аргументов"));
            }
            var result = new List <PackResult>();

            foreach (var m in models)
            {
                try
                {
                    var provider = new LoyaltyDBProvider();
                    provider.ExecuteNonQuery(GetQuery(m));

                    result.Add(new PackResult()
                    {
                        IsSuccess = true, Id = m.Id
                    });
                }
                catch (Exception e)
                {
                    result.Add(new PackResult()
                    {
                        IsSuccess = false, ErrorMessage = e.Message, Id = m.Id
                    });
                }
            }

            return(Ok(result));
        }
Пример #4
0
        private Dictionary <string, PromocodeInformation> ReadPromocodesInformation(Newtonsoft.Json.Linq.JArray promocodes)
        {
            var promocodesDictionary = new Dictionary <string, PromocodeInformation>();
            var provider             = new LoyaltyDBProvider();

            foreach (string promocode in promocodes)
            {
                if (!promocodesDictionary.ContainsKey(promocode))
                {
                    promocodesDictionary[promocode] = provider.ExecuteSelectQuery(@"SELECT ""ContactId"", ""IsUsed"", ""PoolId"", ""Id"" FROM public.""PromoCode"" Where ""Code"" = '{0}'", ReadPromocodeInformation, promocode);
                }
            }

            return(promocodesDictionary);
        }
Пример #5
0
        public ActionResult LoadPrimaryPack(IEnumerable <BaseProcessingModel> models)
        {
            if (models == null)
            {
                return(BadRequest("Ошибка передачи аргументов"));
            }
            try
            {
                var provider = new LoyaltyDBProvider();
                provider.ExecuteNonQuery(GetPrimaryQuery(models));

                return(Ok(models.Select(m => new PackResult()
                {
                    IsSuccess = true, Id = m.Id
                }).ToList()));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
Пример #6
0
        private Int64 GetPromocodeInPurchaseCount(Guid promocodeId)
        {
            var provider = new LoyaltyDBProvider();

            return(provider.ExecuteScalar <Int64>(@"Select COUNT(*) from public.""PromoCodeInPurchase"" Where ""PromoCodeId"" = '{0}'", 0L, promocodeId.ToString()));
        }