Exemplo n.º 1
0
        public override async Task <ExecutionStatusResponse> CreatePromo(PromoCreateRequest request, ServerCallContext context)
        {
            var toSaveCode = new PromoCode()
            {
                Code           = PromoGenerator.GenerateCode(),
                Title          = request.Title,
                ExpirationDate = Convert.ToDateTime(request.ExpirationDate),
                Discount       = request.Discount
            };

            var res = new ExecutionStatusResponse
            {
                Status = false
            };

            try
            {
                await _repository.CreateAsync(toSaveCode);

                res.Status = true;
                return(res);
            }
            catch (Exception e)
            {
                _logger.LogError($"[PROMO-CREATION]<>Some errors occured: {e.Message}");
            }

            return(res);
        }
Exemplo n.º 2
0
        public override async Task <ExecutionStatusResponse> GeneratePromoCodes(GeneratePromoRequest request, ServerCallContext context)
        {
            List <PromoCode> promoCodesToSave = new List <PromoCode>();

            var genResult = new ExecutionStatusResponse()
            {
                Status = false
            };

            try
            {
                for (int i = 0; i < request.Quantity; i++)
                {
                    PromoCode pc = new PromoCode()
                    {
                        Code           = PromoGenerator.GenerateCode(),
                        Title          = request.Title,
                        ExpirationDate = request.ExpirationDate.ToDateTime(),
                        Discount       = request.Discount
                    };

                    promoCodesToSave.Add(pc);
                }

                await _repository.CreateManyAsync(promoCodesToSave);

                genResult.Status = true;
                return(genResult);
            }
            catch (Exception e)
            {
                _logger.LogError($"[PROMO-GENERATION]<>Some errors occured: {e.Message}");
            }

            return(genResult);
        }
 private static IEnumerable <PromoCode> GetOpeningPromocodesAsync()
 {
     return(new List <PromoCode>()
     {
         new PromoCode()
         {
             Code = PromoGenerator.GenerateCode(),
             Title = "EShop Opening",
             ExpirationDate = DateTime.Now.AddDays(15),
             Discount = 0.3
         },
         new PromoCode()
         {
             Code = PromoGenerator.GenerateCode(),
             Title = "EShop Opening",
             ExpirationDate = DateTime.Now.AddDays(15),
             Discount = 0.3
         },
         new PromoCode()
         {
             Code = PromoGenerator.GenerateCode(),
             Title = "EShop Opening",
             ExpirationDate = DateTime.Now.AddDays(15),
             Discount = 0.3
         },
         new PromoCode()
         {
             Code = PromoGenerator.GenerateCode(),
             Title = "EShop Opening",
             ExpirationDate = DateTime.Now.AddDays(15),
             Discount = 0.3
         },
         new PromoCode()
         {
             Code = PromoGenerator.GenerateCode(),
             Title = "EShop Opening",
             ExpirationDate = DateTime.Now.AddDays(15),
             Discount = 0.3
         },
         new PromoCode()
         {
             Code = PromoGenerator.GenerateCode(),
             Title = "EShop Opening",
             ExpirationDate = DateTime.Now.AddDays(15),
             Discount = 0.3
         },
         new PromoCode()
         {
             Code = PromoGenerator.GenerateCode(),
             Title = "EShop Opening",
             ExpirationDate = DateTime.Now.AddDays(15),
             Discount = 0.3
         },
         new PromoCode()
         {
             Code = PromoGenerator.GenerateCode(),
             Title = "EShop Opening",
             ExpirationDate = DateTime.Now.AddDays(15),
             Discount = 0.3
         },
         new PromoCode()
         {
             Code = PromoGenerator.GenerateCode(),
             Title = "EShop Opening",
             ExpirationDate = DateTime.Now.AddDays(15),
             Discount = 0.3
         },
         new PromoCode()
         {
             Code = PromoGenerator.GenerateCode(),
             Title = "EShop Opening",
             ExpirationDate = DateTime.Now.AddDays(15),
             Discount = 0.3
         }
     });
 }
        public given_a_new_account_trigger_promotion()
        {
            _orderCreatedCommand = new OrderCreated
            {
                PickupAddress = new Address
                {
                    Apartment = "3939",
                    Street    = "1234 rue Saint-Hubert",
                    RingCode  = "3131",
                    Latitude  = 45.515065,
                    Longitude = -73.558064
                },
                PickupDate     = new DateTime(2014, 11, 10),
                DropOffAddress = new Address
                {
                    FriendlyName = "Velvet auberge st gabriel",
                    Latitude     = 45.50643,
                    Longitude    = -73.554052,
                },
                Settings = new BookingSettings
                {
                    ChargeTypeId  = 99,
                    VehicleTypeId = 98,
                    ProviderId    = 97,
                    NumberOfTaxi  = 96,
                    Passengers    = 95,
                    Phone         = "94",
                    Name          = "93",
                    LargeBags     = 92
                },
                CreatedDate        = new DateTime(2014, 11, 10),
                ClientLanguageCode = "fr",
                UserAgent          = "TestUserAgent",
                ClientVersion      = "1.0.0",
                UserNote           = "une note"
            };

            var promo = new PromotionCreated
            {
                Name                    = "promo2",
                Description             = "promodesc2",
                Code                    = "code",
                AppliesToCurrentBooking = true,
                AppliesToFutureBooking  = false,
                DiscountType            = PromoDiscountType.Percentage,
                DiscountValue           = 10,
                DaysOfWeek              =
                    new[]
                {
                    DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday,
                    DayOfWeek.Saturday, DayOfWeek.Sunday
                },
                MaxUsage        = 2,
                MaxUsagePerUser = 1,
                StartDate       = new DateTime(2013, 11, 10),
                EndDate         = new DateTime(2020, 11, 10),
                StartTime       =
                    new DateTime(SqlDateTime.MinValue.Value.Year, SqlDateTime.MinValue.Value.Month,
                                 SqlDateTime.MinValue.Value.Day, 10, 0, 0),
                EndTime =
                    new DateTime(SqlDateTime.MinValue.Value.Year, SqlDateTime.MinValue.Value.Month,
                                 SqlDateTime.MinValue.Value.Day, 14, 0, 0),
                PublishedStartDate = new DateTime(2013, 11, 10),
                PublishedEndDate   = new DateTime(2020, 11, 10),
            };

            promo.SourceId        = _promoAccountTriggerId;
            promo.TriggerSettings = new PromotionTriggerSettings {
                Type = PromotionTriggerTypes.AccountCreated
            };
            PromoGenerator.Handle(promo);

            promo.SourceId        = _promoAmountSpentTriggerId;
            promo.TriggerSettings = new PromotionTriggerSettings {
                Type = PromotionTriggerTypes.AmountSpent, AmountSpent = 20
            };
            PromoGenerator.Handle(promo);

            promo.SourceId        = _promoRideCountTriggerId;
            promo.TriggerSettings = new PromotionTriggerSettings {
                Type = PromotionTriggerTypes.RideCount, RideCount = 2
            };
            PromoGenerator.Handle(promo);


            PromoGenerator.Handle(new PromotionActivated {
                SourceId = _promoAccountTriggerId
            });
            PromoGenerator.Handle(new PromotionActivated {
                SourceId = _promoAmountSpentTriggerId
            });
            PromoGenerator.Handle(new PromotionActivated {
                SourceId = _promoRideCountTriggerId
            });
        }