public override async Task<CouponModel> CreateDiscount(CreateDiscountRequest request, ServerCallContext context)
 {
     var coupon = _mapper.Map<Coupon>(request.Coupon);
     await _discountRepository.CreateDiscount(coupon);
     _logger.LogInformation("Discount is successfully created. ProductName : {ProductName}", coupon.ProductName);
     var couponModel = _mapper.Map<CouponModel>(coupon);
     return couponModel;
 }
Exemplo n.º 2
0
        public override async Task <CouponModel> CreateDiscount(CreateDiscountRequest request, ServerCallContext context)
        {
            var coupon = _mapper.Map <Coupon>(request.Coupon);
            await _repo.CreateDiscount(coupon);

            _logger.LogInformation($"Discount has been created. ProductName : {coupon.ProductName}");
            return(_mapper.Map <CouponModel>(coupon));
        }
Exemplo n.º 3
0
        public async Task <Discount> CreateDiscountAsync(CreateDiscountRequest createDiscountRequest)
        {
            ValidateModel(createDiscountRequest);

            var response = await PostAsJsonAsync("/discounts", JsonConvert.SerializeObject(createDiscountRequest)).ConfigureAwait(false);

            return(JsonConvert.DeserializeObject <DiscountResponse>(
                       await response.Content.ReadAsStringAsync().ConfigureAwait(false)).Discount);
        }
        public override async Task <CouponModel> CreateDiscount(CreateDiscountRequest request, ServerCallContext context)
        {
            var coupon = _mapper.Map <Coupon>(request.Coupon);

            await _repository.CreateDiscount(coupon);

            var couponModel = _mapper.Map <CouponModel>(coupon);

            return(couponModel);
        }
Exemplo n.º 5
0
        public override async Task <CouponModel> CreateDiscount(CreateDiscountRequest request, ServerCallContext context)
        {
            var coupon = _mapper.Map <Coupon>(request.Coupon);
            await _repository.CreateDiscount(coupon).ConfigureAwait(false);

            _logger.LogInformation($"Discount is succesfully created. ProductName: {coupon.ProductName}");

            var couponModel = _mapper.Map <CouponModel>(coupon);

            return(couponModel);
        }
Exemplo n.º 6
0
        public override async Task <CreateDiscountResponse> CreateDiscount(CreateDiscountRequest request, ServerCallContext context)
        {
            _logger.LogInformation($"Received: {context}");
            var success = await _discountRepository.CreateVoucher(
                _mapper.Map <Voucher>(request.VoucherToCreate)
                );

            return(new CreateDiscountResponse {
                Success = success
            });
        }
Exemplo n.º 7
0
        public override async Task <CouponModel> CreateDiscount(CreateDiscountRequest request, ServerCallContext context)
        {
            Coupon coupon = GetCoupon(request.Coupon);
            await _discountRepository.CreateDiscount(coupon);

            CouponModel couponModel = GetCouponModel(coupon);

            _logger.LogInformation("Discount is successfully created. ProductName : {productName}", coupon.ProductName);

            return(couponModel);
        }
Exemplo n.º 8
0
        public async Task <IActionResult> AddDiscount([FromRoute] int agencyId, [FromBody] CreateDiscountRequest createDiscountRequest)
        {
            var(_, isFailure, error) = await _discountManagementService.Add(agencyId, createDiscountRequest);

            if (isFailure)
            {
                return(BadRequest(ProblemDetailsBuilder.Build(error)));
            }

            return(NoContent());
        }
        internal static CreateDiscountRequest BuildCreateDiscountRequest()
        {
            var request = new CreateDiscountRequest()
            {
                Value        = 100,
                Cycles       = 1,
                DiscountType = "flat"
            };

            return(request);
        }
    public override async Task <CouponModel> CreateDiscount(CreateDiscountRequest request, ServerCallContext context)
    {
        var coupon = _mapper.Map <Coupon>(request.Coupon);

        await _repository.CreateDiscount(coupon);

        Log.Fatal("Discount is successfully created. ProductName : {ProductName}", coupon.ProductName);

        var couponModel = _mapper.Map <CouponModel>(coupon);

        return(couponModel);
    }
Exemplo n.º 11
0
        public override async Task <CouponModel> CreateDiscount(CreateDiscountRequest request, ServerCallContext context)
        {
            var coupon = this.mapper.Map <Coupon>(request.Coupon);
            var result = await this.discountRepository.CreateDiscount(coupon);

            if (!result)
            {
                throw new RpcException(new Status(StatusCode.NotFound, $""));
            }

            return(this.mapper.Map <CouponModel>(coupon));
        }
        internal static CreateDiscountRequest BuildCreateDiscountOnItemRequest(string subscriptionItemId)
        {
            var request = new CreateDiscountRequest()
            {
                Value        = 100,
                Cycles       = 1,
                DiscountType = "percentage",
                ItemId       = subscriptionItemId
            };

            return(request);
        }
Exemplo n.º 13
0
        public override async Task <CouponDTO> CreateDiscount(CreateDiscountRequest request, ServerCallContext context)
        {
            var insertedId = await _discountRepository.CreateCoupon(_mapper.Map <Coupon>(request.Coupon));

            var newCoupon = await _discountRepository.GetCoupon(insertedId);

            if (newCoupon == null)
            {
                throw new RpcException(new Status(StatusCode.NotFound, "Coupon not found"));
            }
            return(_mapper.Map <CouponDTO>(newCoupon));
        }
Exemplo n.º 14
0
        public override async Task <CouponModel> CreateDiscount(CreateDiscountRequest request, ServerCallContext context)
        {
            var coupon = _mapper.Map <Coupon>(request);

            if (!await _discountRepository.CreateDiscount(coupon))
            {
                throw new RpcException(new Status(StatusCode.AlreadyExists, "Coupon already exists"));
            }

            _logger.LogInformation("Discount is successfully created. ProductName : {ProductName}", coupon.ProductName);

            return(_mapper.Map <CouponModel>(coupon));
        }
Exemplo n.º 15
0
        public override async Task <CouponModel> CreateDiscount(CreateDiscountRequest request, ServerCallContext context)
        {
            var coupon = _mapper.Map <Coupon>(request.Coupon);

            _repository.CreateCoupon(coupon);
            await _repository.SaveChangesAsync();

            _logger.LogInformation("Coupon is successfully created. CategoryName : {CategoryName}", coupon.CategoryName);

            var couponModel = _mapper.Map <CouponModel>(coupon);

            return(couponModel);
        }
Exemplo n.º 16
0
        public async Task <CouponModel> CreateDiscount(CouponModel coupon)
        {
            var discount = new CouponModel()
            {
                ProductName = coupon.ProductName, Amount = coupon.Amount, Description = coupon.Description
            };
            var createDiscountRequest = new CreateDiscountRequest()
            {
                Coupon = discount
            };
            var res = await discountProtoServiceClient.CreateDiscountAsync(createDiscountRequest);

            return(res);
        }
        public override async Task <CouponModel> CreateDiscount(CreateDiscountRequest request, ServerCallContext context)
        {
            var coupon = _mapper.Map <Coupon>(request.Coupon);

            bool status = await _repository.CreateDiscount(coupon);

            if (status)
            {
                _logger.LogInformation("Discount is successfully created. ProductName : {ProductName}", coupon.ProductName);
            }
            else
            {
                _logger.LogInformation("Discount creation failed. ProductName : {ProductName}", coupon.ProductName);
            }
            var couponModel = _mapper.Map <CouponModel>(coupon);

            couponModel.Status = status;
            return(couponModel);
        }
Exemplo n.º 18
0
        public override async Task <CouponModel> CreateDiscount(CreateDiscountRequest request, ServerCallContext context)
        {
            var coupon = _mapper.Map <Coupon>(request.Model);

            try
            {
                await _repository.CreateDiscount(coupon);
            }
            catch (Exception ex)
            {
                throw new Exception($"Failed to create coupon", ex);
            }

            _logger.LogInformation($"Successfully created {request.Model}");

            var couponModel = _mapper.Map <CouponModel>(coupon);

            return(couponModel);
        }
Exemplo n.º 19
0
        public override async Task <CouponResponse> CreateDiscount(CreateDiscountRequest request, ServerCallContext context)
        {
            var coupon = _mapper.Map <Coupon>(request.Coupon);

            bool created = await _discountRepository.CreateDiscount(coupon);

            if (!created)
            {
                _logger.LogError(new RpcException(new Status(StatusCode.InvalidArgument,
                                                             $"Error creating discount for {request.Coupon.ProductId}")),
                                 $"Discount with ProductId={request.Coupon.ProductId} has not been created.");

                return(null);
            }

            _logger.LogInformation($"Discount successfully created for ProductId: " +
                                   $"{coupon.ProductId} - Amount: {coupon.Amount} - Description: {coupon.Description}");

            var couponResponse = _mapper.Map <CouponResponse>(coupon);

            return(couponResponse);
        }
Exemplo n.º 20
0
        public CreateDiscountResponse PostCreateDiscount(CreateDiscountRequest _request)
        {
            String urlorg       = ConfigurationManager.AppSettings["CRMUrlOrg"].ToString();
            String organization = ConfigurationManager.AppSettings["CRMOrganization"].ToString();
            String domain       = ConfigurationManager.AppSettings["CRMDomain"].ToString();
            String username     = ConfigurationManager.AppSettings["CRMUsername"].ToString();
            String password     = ConfigurationManager.AppSettings["CRMPassword"].ToString();
            String hostimage    = ConfigurationManager.AppSettings["HostImage"].ToString();
            String hostimage2   = ConfigurationManager.AppSettings["HostImage2"].ToString();
            String curfileimage = ConfigurationManager.AppSettings["CurfileImage"].ToString();

            CRMLibs crmlibs = new CRMLibs(urlorg, organization, domain, username, password);
            CreateDiscountResponse response = new CreateDiscountResponse();

            try
            {
                Entity discount = new Entity("xrm_discounts");
                if (_request.DiscountName != null)
                {
                    discount.Attributes["xrm_name"] = _request.DiscountName;
                }
                if (_request.StartDate != null)
                {
                    discount.Attributes["xrm_startdate"] = _request.StartDate;
                }
                if (_request.EndDate != null)
                {
                    discount.Attributes["xrm_enddate"] = _request.EndDate;
                }
                if (_request.Description != null)
                {
                    discount.Attributes["xrm_description"] = _request.Description;
                }
                if (_request.StoreCategory != null)
                {
                    discount.Attributes["xrm_storecategory"] = new EntityReference("xrm_storecategory", new Guid(_request.StoreCategory));
                }
                if (_request.Mall != null)
                {
                    discount.Attributes["xrm_mall"] = new EntityReference("xrm_mall", new Guid(_request.Mall));
                }
                if (_request.Tag != null)
                {
                    discount.Attributes["xrm_tag"] = _request.Tag;
                }
                if (_request.Tenant != null)
                {
                    discount.Attributes["xrm_tenant"] = new EntityReference("xrm_tenant", new Guid(_request.Tenant));
                }

                Guid   DiscountID     = crmlibs.createentity(discount);
                Entity discountupdate = new Entity("xrm_discounts", DiscountID);

                if (_request.ImageBase64 != null && _request.ImageType != null)
                {
                    string path   = Directory.GetCurrentDirectory();
                    string target = hostimage + @"Discount\Full\";
                    if (!Directory.Exists(target))
                    {
                        Directory.CreateDirectory(target);
                    }
                    Environment.CurrentDirectory = (target);
                    string target2 = hostimage2 + @"Discount\Full\";
                    if (!Directory.Exists(target2))
                    {
                        Directory.CreateDirectory(target2);
                    }
                    Environment.CurrentDirectory = (target2);
                    string imageName  = DiscountID.ToString() + "-Full-" + DateTime.Now.ToString("yyyyMMdd") + "." + _request.ImageType;
                    string imgPath    = Path.Combine(target, imageName);
                    string imgPath2   = Path.Combine(target2, imageName);
                    byte[] imageBytes = Convert.FromBase64String(_request.ImageBase64);
                    string curFile    = curfileimage + @"Discount\Full\" + imageName;
                    File.WriteAllBytes(imgPath, imageBytes);
                    File.WriteAllBytes(imgPath2, imageBytes);

                    discountupdate.Attributes["xrm_imageurl"] = curFile;
                }

                crmlibs.updateentity(discountupdate);
                response.DiscountID = DiscountID.ToString();
                response.Code       = "0";
                response.Message    = "Success";
            }
            catch (Exception ex)
            {
                response.Code    = "1";
                response.Message = ex.Message;
            }
            return(response);
        }
Exemplo n.º 21
0
        public BaseResponse <GetDiscountResponse> CreateDiscount(string subscriptionId, CreateDiscountRequest request)
        {
            var method   = HttpMethod.Post;
            var endpoint = $"/subscriptions/{subscriptionId}/discounts";

            return(this.HttpClientUtil.SendRequest <GetDiscountResponse>(method, endpoint, request));
        }
Exemplo n.º 22
0
 public DiscountCreateEventData(int agencyId, CreateDiscountRequest createDiscountRequest)
 {
     AgencyId = agencyId;
     CreateDiscountRequest = createDiscountRequest;
 }
        public Task <Result> Add(int agencyId, CreateDiscountRequest createDiscountRequest)
        {
            return(ValidatePercent(createDiscountRequest.DiscountPercent)
                   .Bind(ValidateTargetMarkup)
                   .Bind(ValidateAgency)
                   .Bind(DiscountsDontExceedMarkups)
                   .BindWithTransaction(_context, () => Result.Success()
                                        .Tap(UpdateDiscount)
                                        .Bind(WriteAuditLog)));


            async Task <Result> ValidateTargetMarkup()
            {
                var targetMarkup = await _context.MarkupPolicies
                                   .SingleOrDefaultAsync(p => p.Id == createDiscountRequest.TargetMarkupId);

                if (targetMarkup is null)
                {
                    return(Result.Failure($"Could not find markup policy with id {createDiscountRequest.TargetMarkupId}"));
                }

                return(targetMarkup.SubjectScopeType == SubjectMarkupScopeTypes.Global
                    ? Result.Success()
                    : Result.Failure("Cannot apply discount to non-global markup policy"));
            }

            async Task <Result> ValidateAgency()
            => await _context.Agencies.AnyAsync(a => a.Id == agencyId)
                    ? Result.Success()
                    : Result.Failure($"Could not find an agency with id {agencyId}");


            async Task <Result> DiscountsDontExceedMarkups()
            {
                var markupPolicy = await _context.MarkupPolicies.SingleOrDefaultAsync(x => x.Id == createDiscountRequest.TargetMarkupId);

                var markupFunction = _templateService.CreateFunction(markupPolicy.TemplateId, markupPolicy.TemplateSettings);

                var allDiscounts = await _context.Discounts
                                   .Where(x => x.TargetPolicyId == markupPolicy.Id)
                                   .Where(d => d.TargetAgencyId == agencyId)
                                   .Where(d => d.IsActive)
                                   .Select(d => d.DiscountPercent)
                                   .ToListAsync();

                allDiscounts.Add(createDiscountRequest.DiscountPercent);

                return(DiscountsValidator.DiscountsDontExceedMarkups(allDiscounts, markupFunction));
            }

            Task UpdateDiscount()
            {
                var now = _dateTimeProvider.UtcNow();

                _context.Discounts.Add(new Discount
                {
                    DiscountPercent = createDiscountRequest.DiscountPercent,
                    Description     = createDiscountRequest.Description,
                    TargetPolicyId  = createDiscountRequest.TargetMarkupId,
                    IsActive        = true,
                    TargetAgencyId  = agencyId,
                    Created         = now,
                    Modified        = now
                });
                return(_context.SaveChangesAsync());
            }

            Task <Result> WriteAuditLog()
            => _managementAuditService.Write(ManagementEventType.DiscountCreate, new DiscountCreateEventData(agencyId, createDiscountRequest));
        }