コード例 #1
0
        public void GetDisponibilityNowAnd1Hour()
        {
            const string shopName   = "name";
            Guid         shopId     = Guid.NewGuid();
            var          returnShop = new Shop("codigo", shopName)
            {
                Id    = shopId,
                Turns = new List <Turn>()
            };
            var date = new DateTime(2020, 5, 6, 9, 0, 0);

            do
            {
                if (new DateTime(2020, 5, 6, 10, 0, 0) != date && new DateTime(2020, 5, 6, 11, 10, 0) != date)
                {
                    returnShop.Turns.Add(new Turn(shopId, date, "pepe", new List <int>()));
                }
                date = date.AddMinutes(5);
            } while (date.Hour < 20);
            var model = new GetDisponibilityShopModel()
            {
                Code = "codigo"
            };

            _shopRepo.Setup(x => x.GetByCodeWithTurns(It.IsAny <string>()))
            .Returns(returnShop)
            .Verifiable();
            _utilDateTime.Setup(x => x.GetNow())
            .Returns(new DateTime(2020, 5, 6, 10, 0, 0))
            .Verifiable();

            var expected = new GetDisponibilityShopResponse()
            {
                ShopId   = shopId,
                ShopName = shopName,
                Hours    = new List <HourDisponibilityShop>()
                {
                    new HourDisponibilityShop()
                    {
                        Range = HoursDisponibilityRange.Now
                    },
                    new HourDisponibilityShop()
                    {
                        Range = HoursDisponibilityRange.Hour1
                    },
                }
            };

            var resolve = _service.Execute(model);

            Assert.Equal(expected.ShopId, resolve.ShopId);
            Assert.Equal(expected.ShopName, resolve.ShopName);
            Assert.Equal(
                JsonConvert.SerializeObject(expected.Hours.OrderBy(h => h.Range)),
                JsonConvert.SerializeObject(resolve.Hours.OrderBy(h => h.Range))
                );

            _shopRepo.VerifyAll();
            _utilDateTime.VerifyAll();
        }
コード例 #2
0
        public void GetDisponibilityWhereSopClosed()
        {
            const string shopName   = "name";
            Guid         shopId     = Guid.NewGuid();
            var          returnShop = new Shop("codigo", shopName)
            {
                Id = shopId
            };
            var model = new GetDisponibilityShopModel()
            {
                Code = "codigo"
            };

            _shopRepo.Setup(x => x.GetByCodeWithTurns(It.IsAny <string>()))
            .Returns(returnShop)
            .Verifiable();
            _utilDateTime.Setup(x => x.GetNow())
            .Returns(new DateTime(2020, 5, 6, 0, 0, 0))
            .Verifiable();

            var expected = new GetDisponibilityShopResponse()
            {
                ShopId   = shopId,
                ShopName = shopName,
                Hours    = new List <HourDisponibilityShop>()
                {
                }
            };

            var resolve = _service.Execute(model);

            Assert.Equal(expected.ShopId, resolve.ShopId);
            Assert.Equal(expected.ShopName, resolve.ShopName);
            Assert.Equal(
                JsonConvert.SerializeObject(expected.Hours.OrderBy(h => h.Range)),
                JsonConvert.SerializeObject(resolve.Hours.OrderBy(h => h.Range))
                );

            _shopRepo.VerifyAll();
            _utilDateTime.VerifyAll();
        }
コード例 #3
0
        public GetDisponibilityShopResponse Execute(GetDisponibilityShopModel model)
        {
            var shop = _shopRepo.GetByCodeWithTurns(model.Code);

            if (shop == null)
            {
                return(null);
            }
            var now            = _utilDateTime.GetNow();
            var availableNow   = shop.IsAvailable(now, 2);
            var available15Min = shop.IsAvailable(now.AddMinutes(15), 5);
            var available30Min = shop.IsAvailable(now.AddMinutes(30), 10);
            var available1Hour = shop.IsAvailable(now.AddHours(1), 20);
            var available2Hour = shop.IsAvailable(now.AddHours(2), 30);
            var available4Hour = shop.IsAvailable(now.AddHours(4), 60);

            var hoursDisponibilities = new List <HourDisponibilityShop>();

            if (availableNow)
            {
                hoursDisponibilities.Add(new HourDisponibilityShop()
                {
                    Range = HoursDisponibilityRange.Now
                });
            }
            if (available15Min)
            {
                hoursDisponibilities.Add(new HourDisponibilityShop()
                {
                    Range = HoursDisponibilityRange.Min15
                });
            }
            if (available30Min)
            {
                hoursDisponibilities.Add(new HourDisponibilityShop()
                {
                    Range = HoursDisponibilityRange.Min30
                });
            }
            if (available1Hour)
            {
                hoursDisponibilities.Add(new HourDisponibilityShop()
                {
                    Range = HoursDisponibilityRange.Hour1
                });
            }
            if (available2Hour)
            {
                hoursDisponibilities.Add(new HourDisponibilityShop()
                {
                    Range = HoursDisponibilityRange.Hour2
                });
            }
            if (available4Hour)
            {
                hoursDisponibilities.Add(new HourDisponibilityShop()
                {
                    Range = HoursDisponibilityRange.Hour4
                });
            }
            return(new GetDisponibilityShopResponse()
            {
                ShopId = shop.Id,
                ShopName = shop.Name,
                Hours = hoursDisponibilities
            });
        }