public void CalculateWithNoOffers()
        {
            var printer       = Substitute.For <IPrinter>();
            var basket        = Substitute.For <IBasket>();
            var specialOffers = new SpecialOffers();

            basket.goods.Returns(x => new List <GoodAndQuantity>()
            {
                new GoodAndQuantity {
                    Quantity = 2, Good = new Apples()
                },
                new GoodAndQuantity {
                    Quantity = 1, Good = new Beans()
                }
            });



            var priceCalculator = new PriceCalculator(printer, specialOffers);

            priceCalculator.Calculate(basket);

            printer.Received().PrintLine(Arg.Is <string>(x => x.StartsWith("Subtotal:")));
            printer.Received().PrintLine(Arg.Is <string>(x => x.StartsWith("(No offers available)")));
            printer.Received().PrintLine(Arg.Is <string>(x => x.StartsWith("Total price: ")));
        }
Exemple #2
0
        public SpecialOffers CheckOffers(SpecialOffers _SpecialOffers)
        {
            var Today = Convert.ToDateTime(DateTime.Now.ToShortDateString());

            var AccInfo = _IUoW.Repository <AccMaster>().GetBy(x => x.WalletAccountNo == _SpecialOffers.WalletAccountNo);

            var SpecialOffer = _IUoW.Repository <SpecialOffers>().GetBy(x => x.DefineServiceId == _SpecialOffers.DefineServiceId &&
                                                                        x.AccTypeId == AccInfo.AccTypeId);

            if (SpecialOffer != null)
            {
                var StartDate = SpecialOffer.StartDate.Value.Date;
                var EndDate   = SpecialOffer.EndDate.Value.Date;

                if (Today >= StartDate && Today <= EndDate)
                {
                    return(SpecialOffer);
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
Exemple #3
0
        public HttpResponseMessage GetSpecialOffersBy(HttpRequestMessage reqObject)
        {
            int result = 0;

            _requestedDataObject = _IDataManipulation.GetRequestedDataObject(reqObject);
            if (_requestedDataObject != null && _requestedDataObject.BusinessData != null)
            {
                _SpecialOffer = new SpecialOffers();
                _SpecialOffer = JsonConvert.DeserializeObject <SpecialOffers>(_requestedDataObject.BusinessData);

                bool IsValid = ModelValidation.TryValidateModel(_SpecialOffer, out _modelErrorMsg);
                if (IsValid)
                {
                    result = _ISpecialOfferService.GetSpecialOffersBy(_SpecialOffer);
                }
            }
            if (!string.IsNullOrWhiteSpace(_modelErrorMsg))
            {
                _serviceResponse = _IDataManipulation.SetResponseObject(result, _modelErrorMsg);
            }
            else if (result == 1)
            {
                _serviceResponse = _IDataManipulation.SetResponseObject(result, "Service and Customer Type Already exist");
            }
            else
            {
                _serviceResponse = _IDataManipulation.SetResponseObject(result, "");
            }
            _response = _IDataManipulation.CreateResponse(_serviceResponse, reqObject);
            return(_response);
        }
Exemple #4
0
        public HttpResponseMessage AddSpecialOffer(HttpRequestMessage reqObject)
        {
            int result = 0;

            _requestedDataObject = _IDataManipulation.GetRequestedDataObject(reqObject);
            if (_requestedDataObject != null && _requestedDataObject.BusinessData != null)
            {
                _SpecialOffer = new SpecialOffers();
                _SpecialOffer = JsonConvert.DeserializeObject <SpecialOffers>(_requestedDataObject.BusinessData);

                bool IsValid = ModelValidation.TryValidateModel(_SpecialOffer, out _modelErrorMsg);
                if (IsValid)
                {
                    result = _ISpecialOfferService.AddSpecialOffers(_SpecialOffer);
                }
            }
            if (!string.IsNullOrWhiteSpace(_modelErrorMsg))
            {
                _serviceResponse = _IDataManipulation.SetResponseObject(result, _modelErrorMsg);
            }
            else if (result == 1)
            {
                _serviceResponse = _IDataManipulation.SetResponseObject(result, "information has been added successfully");
            }
            else
            {
                _serviceResponse = _IDataManipulation.SetResponseObject(result, "information hasn't been added");
            }
            _response = _IDataManipulation.CreateResponse(_serviceResponse, reqObject);
            return(_response);
        }
Exemple #5
0
        public HttpResponseMessage CheckOffer(HttpRequestMessage reqObject)
        {
            dynamic result = 0;

            _requestedDataObject = _IDataManipulation.GetRequestedDataObject(reqObject);
            if (_requestedDataObject != null && _requestedDataObject.BusinessData != null)
            {
                _SpecialOffer = new SpecialOffers();
                _SpecialOffer = JsonConvert.DeserializeObject <SpecialOffers>(_requestedDataObject.BusinessData);


                result = _ISpecialOfferService.CheckOffers(_SpecialOffer);
            }
            if (!string.IsNullOrWhiteSpace(_modelErrorMsg))
            {
                _serviceResponse = _IDataManipulation.SetResponseObject(result, _modelErrorMsg);
            }
            else if (result != null)
            {
                _serviceResponse = _IDataManipulation.SetResponseObject(result, "Successfull");
            }
            else if (result == null)
            {
                result           = 0;
                _serviceResponse = _IDataManipulation.SetResponseObject(result, "Fail");
            }
            _response = _IDataManipulation.CreateResponse(_serviceResponse, reqObject);
            return(_response);
        }
Exemple #6
0
        public HttpResponseMessage DeleteSpecialOffers(HttpRequestMessage reqObject)
        {
            int result = 0;

            _requestedDataObject = _IDataManipulation.GetRequestedDataObject(reqObject);
            if (_requestedDataObject != null && _requestedDataObject.BusinessData != null)
            {
                _SpecialOffer = JsonConvert.DeserializeObject <SpecialOffers>(_requestedDataObject.BusinessData);
            }

            if (_SpecialOffer == null || string.IsNullOrWhiteSpace(_SpecialOffer.OfferId))
            {
                _serviceResponse = _IDataManipulation.SetResponseObject(result, "Offer Not Found...");
                _response        = _IDataManipulation.CreateResponse(_serviceResponse, reqObject);
                return(_response);
            }

            result = _ISpecialOfferService.DeleteSpecialOffers(_SpecialOffer);
            if (result == 1)
            {
                _serviceResponse = _IDataManipulation.SetResponseObject(result, "information has been deleted successfully");
            }
            else
            {
                _serviceResponse = _IDataManipulation.SetResponseObject(result, "Offer Not Found...");
            }
            _response = _IDataManipulation.CreateResponse(_serviceResponse, reqObject);
            return(_response);
        }
        public void CreateSpecialOfferWithPriceNull()
        {
            var spec = new SpecialOffers()
            {
                SpecialOfferName = "banan"
            };

            Exception ex = Assert.ThrowsException <ArgumentException>(() =>
                                                                      SpecielOffersService.AddSpecialOffer(spec));

            Assert.AreEqual("Price need to be higher than 0", ex.Message);
        }
        public void CreateSpecialOfferWithNoName()
        {
            var spec = new SpecialOffers()
            {
                Price = 100
            };

            Exception ex = Assert.ThrowsException <ArgumentException>(() =>
                                                                      SpecielOffersService.AddSpecialOffer(spec));

            Assert.AreEqual("Speciel offer need a name", ex.Message);
        }
 public SpecialOffers AddSpecialOffer(SpecialOffers specialOffers)
 {
     if (specialOffers.Price < 1)
     {
         throw new ArgumentException("Price need to be higher than 0");
     }
     if (specialOffers.SpecialOfferName == null)
     {
         throw new ArgumentException("Speciel offer need a name");
     }
     return(_sOffersRepo.CreateSpecialOffers(specialOffers));
 }
        public ActionResult <SpecialOffers> Post([FromBody] SpecialOffers spcl)
        {
            try
            {
                return(Ok(_spclService.AddSpecialOffer(spcl)));
            }

            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
        public void UpdateByIdSpecialOfferWithNoId()
        {
            var spec = new SpecialOffers()
            {
                SpecialOfferName = "Banan",
                Price            = 100
            };

            Exception ex = Assert.ThrowsException <ArgumentException>(() =>
                                                                      SpecielOffersService.UpdateSpecialOffer(spec));

            Assert.AreEqual("Id need to be higher than 0", ex.Message);
        }
        public ActionResult <SpecialOffers> Put(int id, [FromBody] SpecialOffers spcl)
        {
            try
            {
                var entity = _spclService.UpdateSpecialOffer(spcl);
                entity.SpecialOfferName = spcl.SpecialOfferName;
                return(Ok(entity));
            }

            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
Exemple #13
0
        public int GetSpecialOffersBy(SpecialOffers _SpecialOffers)
        {
            var SpecialOffer = _IUoW.Repository <SpecialOffers>().GetBy(x => x.DefineServiceId == _SpecialOffers.DefineServiceId &&
                                                                        x.AccTypeId == _SpecialOffers.AccTypeId);

            if (SpecialOffer == null)
            {
                return(0);
            }
            else
            {
                return(1);
            }
        }
        public void UpdateSpecielOfferPrice0()
        {
            var spec = new SpecialOffers()
            {
                Id               = 1,
                Price            = 0,
                SpecialOfferName = "banan"
            };

            Exception ex = Assert.ThrowsException <ArgumentException>(() =>
                                                                      SpecielOffersService.UpdateSpecialOffer(spec));

            Assert.AreEqual("Price need to be higher than 0", ex.Message);
        }
        private void LoadSpecialOffers()
        {
            SpecialOffers.Add(new SpecialOffer
            {
                SKU      = "A99",
                Price    = 1.30m,
                Quantity = 3
            });

            SpecialOffers.Add(new SpecialOffer
            {
                SKU      = "B15",
                Price    = 0.45m,
                Quantity = 2
            });
        }
        public void CalculateWithBreadAndBeansOffers()
        {
            var printer       = Substitute.For <IPrinter>();
            var basketBuilder = new BasketBuilder();

            basketBuilder.Parse(new string[] { "Beans", "Beans", "Bread" }, out var basket);
            var specialOffers = new SpecialOffers();

            var priceCalculator = new PriceCalculator(printer, specialOffers);

            priceCalculator.Calculate(basket);

            printer.Received().PrintLine(Arg.Is <string>(x => x.StartsWith("Subtotal")));
            printer.Received().PrintLine(Arg.Is <string>(x => x.StartsWith("Buy 2 cans of ")));
            printer.Received().PrintLine(Arg.Is <string>(x => x.StartsWith("Total price:")));
        }
        public void CalculateWithLotsOfApplesOffers()
        {
            var printer       = Substitute.For <IPrinter>();
            var basketBuilder = new BasketBuilder();

            basketBuilder.Parse(new string[] { "Apples", "Apples", "Apples", "Apples" }, out var basket);
            var specialOffers = new SpecialOffers();

            var priceCalculator = new PriceCalculator(printer, specialOffers);

            priceCalculator.Calculate(basket);

            printer.Received().PrintLine(Arg.Is <string>(x => x.StartsWith("Subtotal: ")));
            printer.Received().PrintLine(Arg.Is <string>(x => x.StartsWith("Apples 10% off:: 40p")));
            printer.Received().PrintLine(Arg.Is <string>(x => x.StartsWith("Total price: ")));
        }
Exemple #18
0
        public int DeleteSpecialOffers(SpecialOffers _SpecialOffers)
        {
            try
            {
                int  result = 0;
                bool IsRecordExist;
                if (!string.IsNullOrWhiteSpace(_SpecialOffers.OfferId))
                {
                    IsRecordExist = _IUoW.Repository <SpecialOffers>().IsRecordExist(x => x.OfferId == _SpecialOffers.OfferId);
                    if (IsRecordExist)
                    {
                        var _oldSpecialOffers       = _IUoW.Repository <SpecialOffers>().GetBy(x => x.OfferId == _SpecialOffers.OfferId);
                        var _oldSpecialOffersForLog = ObjectCopier.DeepCopy(_oldSpecialOffers);

                        _oldSpecialOffers.AuthStatusId = _SpecialOffers.AuthStatusId = "U";
                        _oldSpecialOffers.LastAction   = _SpecialOffers.LastAction = "DEL";
                        _oldSpecialOffers.LastUpdateDT = _SpecialOffers.LastUpdateDT = System.DateTime.Now;
                        result = _IUoW.Repository <SpecialOffers>().Update(_oldSpecialOffers);

                        #region Auth Log
                        if (result == 1)
                        {
                            _IAuthLogService = new AuthLogService();
                            long _outMaxSlAuthLogDtl = 0;
                            _IAuthLogService.AddAuthLog(_IUoW, _oldSpecialOffersForLog, _SpecialOffers, "DEL", "0001", _SpecialOffers.FunctionId, 1, "SpecialOffers", "MTK_SP_SPECIAL_OFFERS", "OfferId", _SpecialOffers.OfferId, _SpecialOffers.UserName, _outMaxSlAuthLogDtl, out _outMaxSlAuthLogDtl);
                        }
                        #endregion

                        if (result == 1)
                        {
                            _IUoW.Commit();
                        }
                        return(result);
                    }
                    return(result);
                }
                return(result);
            }
            catch (Exception ex)
            {
                _ObjErrorLogService = new ErrorLogService();
                _ObjErrorLogService.AddErrorLog(ex, string.Empty, "DeleteSpecialOffers(obj)", string.Empty);
                return(0);
            }
        }
Exemple #19
0
        public int AddSpecialOffers(SpecialOffers _SpecialOffers)
        {
            try
            {
                var startDate = _SpecialOffers.StartDate.Value.Date;
                var endDate   = _SpecialOffers.EndDate.Value.Date;
                var _max      = _IUoW.Repository <SpecialOffers>().GetMaxValue(x => x.OfferId) + 1;
                _SpecialOffers.OfferId      = _max.ToString().PadLeft(3, '0');
                _SpecialOffers.StartDate    = startDate;
                _SpecialOffers.EndDate      = endDate;
                _SpecialOffers.AuthStatusId = "U";
                _SpecialOffers.LastAction   = "ADD";
                _SpecialOffers.MakeDT       = System.DateTime.Now;
                _SpecialOffers.MakeBy       = "mtaka";
                var result = _IUoW.Repository <SpecialOffers>().Add(_SpecialOffers);

                #region Auth Log
                if (result == 1)
                {
                    _IAuthLogService = new AuthLogService();
                    long _outMaxSlAuthLogDtl = 0;
                    result = _IAuthLogService.AddAuthLog(_IUoW, null, _SpecialOffers, "ADD", "0001", _SpecialOffers.FunctionId, 1, "SpecialOffers", "MTK_SP_SPECIAL_OFFERS", "OfferId", _SpecialOffers.OfferId, _SpecialOffers.UserName, _outMaxSlAuthLogDtl, out _outMaxSlAuthLogDtl);
                }
                #endregion

                if (result == 1)
                {
                    _IUoW.Commit();
                }
                return(result);
            }
            catch (Exception ex)
            {
                _ObjErrorLogService = new ErrorLogService();
                _ObjErrorLogService.AddErrorLog(ex, string.Empty, "AddSpecialOffers(obj)", string.Empty);
                return(0);
            }
        }
 private void DeleteSpecialOfferFn(object index) => SpecialOffers.RemoveAt((int)index);
Exemple #21
0
 public SpecialOffers CreateSpecialOffers(SpecialOffers specialOffers)
 {
     _ctx.Attach(specialOffers).State = EntityState.Added;
     _ctx.SaveChanges();
     return(specialOffers);
 }
Exemple #22
0
 public SpecialOffers UpdateSpecialOffers(SpecialOffers specialOffers)
 {
     _ctx.Attach(specialOffers).State = EntityState.Modified;
     _ctx.SaveChanges();
     return(specialOffers);
 }