コード例 #1
0
        public async Task <MessageResponse> UpdateDiscount(DiscountRequest request)
        {
            try
            {
                using (UnitOfWork uow = new UnitOfWork())
                {
                    Discount d = await uow.Discounts.SingleOrDefaultAsync(x => x.Code == request.Code);

                    if (d != null && d.Id != request.Id)
                    {
                        return(new MessageResponse("error", "Tạo mới thất bại", "Lỗi: Mã code đã tồn tại."));
                    }
                    var discount = mapper.Map <DiscountRequest, Discount>(request);
                    discount.Id = request.Id;
                    uow.Discounts.Update(discount);
                    await uow.SaveAsync();

                    return(new MessageResponse("success", "Cập nhật thành công"));
                }
            }
            catch (Exception e)
            {
                return(new MessageResponse("error", "Cập nhật thất bại", "Lỗi: " + e.Message));
            }
        }
コード例 #2
0
        public async Task <IActionResult> Update([FromForm] DiscountRequest request)
        {
            MessageResponse message = await discountService.UpdateDiscount(request);

            ShowMessage(message);
            return(RedirectToAction("Index"));
        }
コード例 #3
0
ファイル: DiscountFactory.cs プロジェクト: ttcp112/CSC
        /// <summary>
        /// Result will return list Discount
        /// </summary>
        /// <param name="SearchString"></param>
        /// <returns></returns>
        public List <DiscountModels> GetListData(string SearchString = null)
        {
            List <DiscountModels> listData = new List <DiscountModels>();

            try
            {
                DiscountRequest paraBody = new DiscountRequest();
                paraBody.SearchString = SearchString;
                NSLog.Logger.Info("DiscountGetListData Request: ", paraBody);

                var     result     = (NSApiResponse)ApiResponse.Post <NSApiResponse>(Commons.DiscountAPIGetList, null, paraBody);
                dynamic data       = result.Data;
                var     lstDataRaw = data["ListDiscount"];
                var     lstObject  = JsonConvert.SerializeObject(lstDataRaw);
                listData = JsonConvert.DeserializeObject <List <DiscountModels> >(lstObject);

                NSLog.Logger.Info("DiscountGetListData", listData);

                return(listData);
            }
            catch (Exception e)
            {
                NSLog.Logger.Error("DiscountGetListData_Fail", e);
                return(listData);
            }
        }
コード例 #4
0
        public async Task <IActionResult> Post([FromBody] DiscountRequest request)
        {
            int onlyOneTarget = (request.ItemID.HasValue ? 1 : 0) + (request.CategoryID.HasValue ? 1 : 0) + (request.SubCategoryID.HasValue ? 1 : 0);

            if (onlyOneTarget != 1)
            {
                return(StatusCode((int)HttpStatusCode.BadRequest, new ErrorResponse(ErrorReasons.BadRequest, "Only one: Category or SubCategory or Item can have discount.")));
            }
            if (request.ItemID.HasValue && (await _discountRepository.GetDiscountForItem(request.ItemID.Value)) != null)
            {
                return(StatusCode((int)HttpStatusCode.BadRequest, new ErrorResponse(ErrorReasons.BadRequest, "Item already has a discount.")));
            }
            if (request.CategoryID.HasValue && (await _discountRepository.GetDiscountForCategory(request.CategoryID.Value)) != null)
            {
                return(StatusCode((int)HttpStatusCode.BadRequest, new ErrorResponse(ErrorReasons.BadRequest, "Category already has a discount.")));
            }
            if (request.SubCategoryID.HasValue && (await _discountRepository.GetDiscountForCategory(request.SubCategoryID.Value)) != null)
            {
                return(StatusCode((int)HttpStatusCode.BadRequest, new ErrorResponse(ErrorReasons.BadRequest, "SubCategory already has a discount.")));
            }

            await _discountRepository.InsertDiscount(new Discount
            {
                Name          = request.Name,
                Value         = request.Value,
                IsPercentages = request.IsPercentages,
                To            = request.To,
                ItemID        = request.ItemID,
                CategoryID    = request.CategoryID,
                SubCategoryID = request.SubCategoryID
            });

            return(StatusCode((int)HttpStatusCode.NoContent));
        }
コード例 #5
0
        public override async Task <DiscountModel> GetDiscount(DiscountRequest request, ServerCallContext context)
        {
            var discount = await Discount(request.UserId);

            return(new DiscountModel
            {
                Pct = discount
            });
        }
コード例 #6
0
        public override DiscountRequest Check(DiscountRequest request)
        {
            if (request.Cart.Subtotal >= minSubtotal)
            {
                request.Amount += request.Cart.Subtotal * (percentage / 100);
                return(request);
            }

            return(base.Check(request));
        }
コード例 #7
0
        private void RecalulateQuote(UserSessionModel user, DiscountRequest entity)
        {
            Entry = Db.Entry(entity.Quote);

            entity.Quote.RecalculationRequired = true;

            Entry.State = EntityState.Modified;

            new QuoteServices(this, "Quote").ApplyBusinessRules(user, entity.Quote);
        }
コード例 #8
0
 public virtual DiscountRequest Check(DiscountRequest request)
 {
     if (NextDiscount != null)
     {
         return(NextDiscount.Check(request));
     }
     else
     {
         return(request);
     }
 }
コード例 #9
0
        public double CheckDiscounts(ShoppingCart cart)
        {
            if (FirstDiscount == null)
            {
                return(0);
            }

            DiscountRequest request = new DiscountRequest(cart);
            DiscountRequest final   = FirstDiscount.Check(request);

            return(request.Amount);
        }
コード例 #10
0
        public override DiscountRequest Check(DiscountRequest request)
        {
            foreach (var item in request.Cart.Items)
            {
                if (item.Quantity >= minQuantity)
                {
                    request.Amount += item.TotalCost * (percentage / 100);
                    return(request);
                }
            }

            return(base.Check(request));
        }
コード例 #11
0
        public override DiscountRequest Check(DiscountRequest request)
        {
            foreach (var item in request.Cart.Items)
            {
                if (item.CategoryID != categoryID)
                {
                    return(base.Check(request));
                }
            }

            request.Amount += request.Cart.ShippingCost;
            return(request);
        }
コード例 #12
0
        public async Task UpdateDiscountAsync_StateUnderTest_ExpectedException()
        {
            // Arrange
            var testBook         = this.GetTestBook();
            var newDiscountModel = new DiscountRequest
            {
                BooksId = new List <Guid> {
                    new Guid()
                }
            };

            // Act
            await this.service.UpdateDiscountAsync(newDiscountModel);
        }
コード例 #13
0
ファイル: BookService.cs プロジェクト: Ispolin7/BookStore
        /// <summary>
        /// Change actual price.
        /// </summary>
        /// <param name="discountModel"></param>
        /// <returns>success</returns>
        public async Task <bool> UpdateDiscountAsync(DiscountRequest discountModel)
        {
            this.discountValidator.Validate(discountModel).ThrowIfInvalid();

            var booksCollection = await this.dbContext.Books
                                  .Where(b => discountModel.BooksId.Contains(b.Id))
                                  .ToListAsync();

            booksCollection.ForEach(b => b.ActualPrice = b.OrgPrice - (b.OrgPrice * discountModel.Discount / 100));
            this.dbContext.Books.UpdateRange(booksCollection);
            await this.dbContext.SaveChangesAsync();

            return(true);
        }
コード例 #14
0
        public async Task <DiscountResponse> Get(DiscountRequest request)
        {
            var discount = _discountDataService.Query
                           .Include(x => x.AppliedToCategories)
                           .Include(x => x.AppliedToProducts)
                           .Include(x => x.AppliedToProducts.Select(p => p.Pictures)).FirstOrDefault(x => x.Id == request.Id);

            if (!HasAccessToSee(discount, request.RequestOwner))
            {
                _securityLogger.LogDangeriousReadAttemp(request.RequestOwner, discount);
                return(new DiscountResponse {
                    Access = ResponseAccess.Deny
                });
            }
            return(new DiscountResponse {
                Access = ResponseAccess.Granted, Model = discount.MapToViewModel()
            });
        }
コード例 #15
0
ファイル: DiscountService.cs プロジェクト: SivanWork/Nodal
        public BaseResponse UpdateDiscount(DiscountRequest request)
        {
            BaseResponse discountResponse = new BaseResponse();

            try
            {
                var orderID = repository.UpdateDiscount(request.discount);
                discountResponse.Success = true;
            }
            catch (Exception ex)
            {
                discountResponse.Success    = false;
                discountResponse.Message    = ex.Message;
                discountResponse.StackTrace = ex.StackTrace;
            }

            return(discountResponse);
        }
コード例 #16
0
ファイル: DiscountFactory.cs プロジェクト: ttcp112/CSC
        /// <summary>
        /// Create Or Edit Discount
        /// </summary>
        /// <param name="model"></param>
        /// <param name="msg"></param>
        /// <returns> return value type bool </returns>
        public bool CreateOrEdit(DiscountDetailModels model, ref string msg)
        {
            try
            {
                DiscountRequest paraBody = new DiscountRequest();
                if (model.PeriodDate != null)
                {
                    model.PeriodDate = CommonHelper.ConvertToUTCTime(model.PeriodDate);
                }

                //model.ApplyFrom = CommonHelper.ConvertToUTCTime(model.ApplyFrom);
                //model.ApplyTo = CommonHelper.ConvertToUTCTime(model.ApplyTo);
                paraBody.DiscountDetail = model;
                paraBody.CreatedUser    = model.CreateUser;

                NSLog.Logger.Info("DiscountCreateOrEdit Request: ", paraBody);
                //====================
                var result = (NSApiResponse)ApiResponse.Post <NSApiResponse>(Commons.DiscountAPICreateOrEdit, null, paraBody);
                if (result != null)
                {
                    if (result.Success)
                    {
                        return(true);
                    }
                    else
                    {
                        msg = result.Message;
                        NSLog.Logger.Info("DiscountCreateOrEdit", result.Message);
                        return(false);
                    }
                }
                else
                {
                    NSLog.Logger.Info("DiscountCreateOrEdit", result);
                    return(false);
                }
            }
            catch (Exception e)
            {
                NSLog.Logger.Error("DiscountCreateOrEdit_Fail", e);
                return(false);
            }
        }
コード例 #17
0
        public override DiscountResponse HandleDiscountRequest(DiscountRequest request)
        {
            if (request.DiscountPercentage <= 50)
            {
                return(new DiscountResponse()
                {
                    IsApproved = true
                });
            }

            if (this.Supervisor == null)
            {
                return(new DiscountResponse()
                {
                    IsApproved = false
                });
            }

            return(this.Supervisor.HandleDiscountRequest(request));
        }
コード例 #18
0
        public async Task UpdateDiscountAsync_StateUnderTest_ExpectedBehavior()
        {
            // Arrange
            var testBook         = this.GetTestBook();
            var newDiscountModel = new DiscountRequest
            {
                BooksId = new List <Guid> {
                    testBook.Id
                },
                Discount = 100
            };

            // Act
            await this.service.UpdateDiscountAsync(newDiscountModel);

            var updatedPrice = (await this.service.GetAsync(testBook.Id)).ActualPrice;

            // Assert
            Assert.AreEqual(updatedPrice, 0, $"Actual price - {updatedPrice}");
        }
コード例 #19
0
        public async Task <IActionResult> Create([FromBody] DiscountRequest request)
        {
            try
            {
                var validator = new DiscountRequestValidator();
                var result    = await validator.ValidateAsync(request);

                if (result.IsValid)
                {
                    var existingCustomer = await _discountService.GetDiscountByName(request.Name);

                    if (existingCustomer != null)
                    {
                        throw new BadRequestException("Discount Already Exist For this Discount Type");
                    }

                    var discount = new Discount
                    {
                        DiscountType = request.DiscountType,
                        CreatedOn    = DateTime.Now,
                        Value        = request.Value,
                        Name         = request.Name
                    };

                    await _discountService.CreateDiscount(discount);

                    var response = _mapper.Map <DiscountResponse>(discount);

                    return(CreatedAtAction(nameof(Get), new { name = discount.Name }, response));
                }


                throw new ValidationException(result.Errors.ToList());
            }
            catch (Exception e)
            {
                _logger.LogInformation($"Error Occur while Creating Discount --> message {e.Message}");
                throw;
            }
        }
コード例 #20
0
ファイル: DiscountFactory.cs プロジェクト: ttcp112/CSC
        /// <summary>
        /// Delete Discount
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="CreateUser"></param>
        /// <param name="msg"></param>
        /// <returns> return value type bool </returns>
        public bool Delete(string ID, string CreateUser, ref string msg, string ReasonDelete = null)
        {
            try
            {
                DiscountRequest paraBody = new DiscountRequest();
                paraBody.CreatedUser  = CreateUser;
                paraBody.ReasonDelete = ReasonDelete;
                paraBody.ID           = ID;

                NSLog.Logger.Info("DiscountDelete Request: ", paraBody);
                //====================
                var result = (NSApiResponse)ApiResponse.Post <NSApiResponse>(Commons.DiscountAPIDelete, null, paraBody);
                if (result != null)
                {
                    if (result.Success)
                    {
                        return(true);
                    }
                    else
                    {
                        msg = result.Message;
                        NSLog.Logger.Info("DiscountDelete", result.Message);
                        return(false);
                    }
                }
                else
                {
                    NSLog.Logger.Info("DiscountDelete", result);
                    return(false);
                }
            }
            catch (Exception e)
            {
                msg = e.ToString();
                NSLog.Logger.Error("DiscountDelete_Fail", e);
                return(false);
            }
        }
コード例 #21
0
ファイル: DiscountFactory.cs プロジェクト: ttcp112/CSC
        /// <summary>
        /// Generate Code for Discount
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="NumberCode"></param>
        /// <param name="CreatedUser"></param>
        /// <param name="msg"></param>
        /// <returns> return value type bool </returns>
        public bool GenerateCode(string ID, int NumberCode, string CreatedUser, ref string msg)
        {
            try
            {
                DiscountRequest paraBody = new DiscountRequest();
                paraBody.ID          = ID;
                paraBody.NumberCode  = NumberCode;
                paraBody.CreatedUser = CreatedUser;

                NSLog.Logger.Info("DiscountGenerateCode Request: ", paraBody);
                //====================
                var result = (NSApiResponse)ApiResponse.Post <NSApiResponse>(Commons.DiscountAPIGenerate, null, paraBody);
                if (result != null)
                {
                    if (result.Success)
                    {
                        return(true);
                    }
                    else
                    {
                        msg = result.Message;
                        NSLog.Logger.Info("DiscountGenerateCode", result.Message);
                        return(false);
                    }
                }
                else
                {
                    NSLog.Logger.Info("DiscountGenerateCode", result);
                    return(false);
                }
            }
            catch (Exception e)
            {
                NSLog.Logger.Error("DiscountGenerateCode_Fail", e);
                return(false);
            }
        }
コード例 #22
0
 public DiscountTest()
 {
     //Arrange
     _discountRepositoryMock = new Mock <IDiscountRepository>();
     _productRepositoryMock  = new Mock <IProductRepository>();
     discount          = new PoS.Sell.Domain.Discount.Discount(_discountRepositoryMock.Object, _productRepositoryMock.Object);
     _availableproduct = new List <Product>();
     _availableproduct = new List <Product> {
         new Product()
         {
             Description = "Chicles Trident 18's",
             SKU         = "7506105606053",
             Price       = new Amount()
             {
                 CurrencyId  = Guid.Parse("50bca81b-4099-4087-8469-874fdc6906cf"),
                 TotalAmount = 14
             },
             Taxes = new List <Tax>
             {
                 new Tax()
                 {
                     Id          = "b0d92892-eb04-4a34-a655-63264cc923eb",
                     Percentage  = 16,
                     Description = "IVA"
                 }
             }
         }
     };
     discountRequest = new DiscountRequest
     {
         ProductDescription = "Chicles Trident 18's",
         Descripcion        = "Descuento de chicles Trident",
         Vigencia           = new DateTime(2020, 07, 31),
         Porcentaje         = 10
     };
 }
コード例 #23
0
ファイル: DiscountFactory.cs プロジェクト: ttcp112/CSC
        /// <summary>
        /// Block Or Unblock Discount from ListCodeID
        /// </summary>
        /// <param name="ListCodeID"></param>
        /// <param name="CreateUser"></param>
        /// <param name="msg"></param>
        /// <returns> return value type bool </returns>
        public bool BlockOrUnblock(List <string> ListCodeID, string CreateUser, ref string msg)
        {
            try
            {
                DiscountRequest paraBody = new DiscountRequest();
                paraBody.ListID      = ListCodeID;
                paraBody.CreatedUser = CreateUser;

                NSLog.Logger.Info("DiscountBlockOrUnblock Request: ", paraBody);
                //====================
                var result = (NSApiResponse)ApiResponse.Post <NSApiResponse>(Commons.DiscountAPIBlockOrUnblock, null, paraBody);
                if (result != null)
                {
                    if (result.Success)
                    {
                        return(true);
                    }
                    else
                    {
                        msg = result.Message;
                        NSLog.Logger.Info("DiscountBlockOrUnblock", result.Message);
                        return(false);
                    }
                }
                else
                {
                    NSLog.Logger.Info("DiscountBlockOrUnblock", result);
                    return(false);
                }
            }
            catch (Exception e)
            {
                NSLog.Logger.Error("DiscountBlockOrUnblock_Fail", e);
                return(false);
            }
        }
コード例 #24
0
 public abstract DiscountResponse HandleDiscountRequest(DiscountRequest request);
コード例 #25
0
 public void ComputeDiscountOnItem(DiscountRule rule, DiscountRequest discountRequest, DiscountResponse discountResponse, DiscountRequestItem item)
 {
     item.TotalDiscount += rule.Value;
 }
コード例 #26
0
 public void ComputeDiscountOnCart(DiscountRule rule, DiscountRequest discountRequest, DiscountResponse discountResponse)
 {
     // Do Nothing
 }
コード例 #27
0
 public DiscountResponse ProcessCustomerDiscountRequest(DiscountRequest request)
 {
     return(this.salesChain.HandleDiscountRequest(request));
 }
コード例 #28
0
 public BaseResponse CreateDiscount(DiscountRequest request)
 {
     return(service.InsertDiscount(request));
 }
コード例 #29
0
        public async Task <IActionResult> ChangeDiscountAsync([FromBody] DiscountRequest discountModel)
        {
            await service.UpdateDiscountAsync(discountModel);

            return(NoContent());
        }
コード例 #30
0
 public BaseResponse UpdateDiscount(DiscountRequest request)
 {
     return(service.UpdateDiscount(request));
 }