public static void Seed()
        {
            using var _ctx = new Context();
            _ctx.Database.EnsureDeleted();
            _ctx.Database.EnsureCreated();
            var comp1 = new Company("pingo ácido", 123456789);
            var reg1  = new Region("Covilhã");
            var est1  = new Establishment("rua das papoilas", "09h00", "20h00", "sundays and holidays", reg1.Id, comp1.Id);
            var reQ1  = new ReservedQueue(est1.Id);
            var stQ1  = new StoreQueue(12, est1.Id);

            var cat1 = new Category("Non-Alcoholic Beverages");
            var bra1 = new Brand("Luso");
            var eg1  = new EssentialGood("Água", false, "560-3187-922", 0.39, 0.5);
            var spb1 = new ShoppingBasket(est1.Id);


            _ctx.Companies.AddRange(comp1);
            _ctx.Regions.AddRange(reg1);
            _ctx.Establishments.AddRange(est1);
            _ctx.ReservedQueues.AddRange(reQ1);
            _ctx.StoreQueues.AddRange(stQ1);
            _ctx.ShoppingBaskets.AddRange(spb1);
            _ctx.SaveChanges();
        }
        public async Task <OperationResult <bool> > CreateAsync(ReservedQueue item)
        {
            try
            {
                var reserveList = await _dao.ListAsync();

                var reserveCountToday    = reserveList.Count(x => x.ProfileId == item.ProfileId && x.CreatedAt.Day == DateTime.UtcNow.Day && !x.IsDeleted && x.CreatedAt.AddHours(2) > DateTime.UtcNow);
                var reserveCancelledList = await _dao.ListAsync();

                var reserveCancelationCountToday = reserveCancelledList.Count(x => x.ProfileId == item.ProfileId && x.CreatedAt.Day == DateTime.UtcNow.Day && x.IsDeleted);
                if (reserveCountToday > 0 || reserveCancelationCountToday == 2)
                {
                    return new OperationResult <bool>()
                           {
                               Success = true, Result = false, Message = "Daily limit reached"
                           }
                }
                ;
                await _dao.CreateAsync(item);

                return(new OperationResult <bool>()
                {
                    Success = true, Result = true
                });
            }
            catch (Exception e)
            {
                return(new OperationResult <bool>()
                {
                    Success = false, Exception = e
                });
            }
        }
        public static void Seed()
        {
            using var _ctx = new Context();
            _ctx.Database.EnsureDeleted();
            _ctx.Database.EnsureCreated();

            var reg1  = new Region("Covilhã");
            var comp1 = new Company("pingo ácido", 123456789);
            var est1  = new Establishment("Avenida da liberdade, numero 1029, Lisboa", "09:00", "20:00", "Domingo", reg1.Id, comp1.Id);
            var cat1  = new Category("Non-Alcoholic Beverages");
            var bra1  = new Brand("Dona Edite");
            var prof1 = new Profile(123456789, "Paulo", "Macabres", 919191919, DateTime.UtcNow);
            var sb1   = new ShoppingBasket(prof1.Id);
            var mod1  = new ProductModel("Vinho Tinto da Barraca do Tejo", "506-1237-424", "oklmwelkmcwekmowmcklm", 3.99, 0.75, Measure.Kg, bra1.Id, cat1.Id);
            var stoQ1 = new StoreQueue(42, est1.Id);
            var resQ1 = new ReservedQueue(est1.Id, prof1.Id);
            var unit1 = new ProductUnit("lolada69420", false, mod1.Id, est1.Id, sb1.Id);


            _ctx.Regions.AddRange(reg1);
            _ctx.Companies.AddRange(comp1);
            _ctx.Establishments.AddRange(est1);
            _ctx.Categories.AddRange(cat1);
            _ctx.Brands.AddRange(bra1);
            _ctx.Profiles.AddRange(prof1);
            _ctx.ShoppingBaskets.AddRange(sb1);
            _ctx.ProductModels.AddRange(mod1);
            _ctx.StoreQueues.AddRange(stoQ1);
            _ctx.ReservedQueues.AddRange(resQ1);
            _ctx.ProductUnits.AddRange(unit1);


            _ctx.SaveChanges();
        }
 public static ReservedQueueViewModel Parse(ReservedQueue reservedQueue)
 {
     return(new ReservedQueueViewModel()
     {
         Id = reservedQueue.Id,
         ProfileId = reservedQueue.ProfileId,
         EstablishmentId = reservedQueue.EstablishmentId,
         ExpirationDate = reservedQueue.CreatedAt.AddHours(2).ToString("dd-MM-yyyy HH:mm:ss"),
     });
 }
        public void TestCreateAndReadReservedQueueAsync()
        {
            ContextSeeder.Seed();
            var bo        = new ReservedQueueBusinessObject();
            var resList   = bo.List();
            var item      = resList.Result.FirstOrDefault();
            var reg       = new ReservedQueue(item.EstablishmentId);
            var resCreate = bo.CreateAsync(reg).Result;
            var resGet    = bo.ReadAsync(reg.Id).Result;

            Assert.IsTrue(resCreate.Success && resGet.Success && resGet.Result != null);
        }
        public void TestHourLimitAsync()
        {
            ContextSeeder.Seed();

            var boProf   = new ProfileBusinessObject();
            var profList = boProf.List().Result.First();
            var boEst    = new EstablishmentBusinessObject();
            var estList  = boEst.List().Result.First();

            var bo  = new ReservedQueueBusinessObject();
            var res = new ReservedQueue(Guid.NewGuid(), DateTime.UtcNow.AddHours(-3), DateTime.UtcNow, false, estList.Id, profList.Id);

            var resCreate = bo.CreateAsync(res);
            var limit     = bo.TwoHourLimitReserveAsync(res.Id);

            Assert.IsTrue(res.IsDeleted && limit.Result.Success && !limit.Result.Result);
        }
        public void TestCreateAndReadReservedQueueAsync()
        {
            ContextSeeder.Seed();

            var boProf   = new ProfileBusinessObject();
            var profList = boProf.List().Result.First();

            var boEst   = new EstablishmentBusinessObject();
            var estList = boEst.List().Result.First();

            var bo        = new ReservedQueueBusinessObject();
            var res       = new ReservedQueue(estList.Id, profList.Id);
            var resCreate = bo.CreateAsync(res).Result;
            var resGet    = bo.ReadAsync(res.Id).Result;

            Assert.IsTrue(resCreate.Success && resGet.Success && resGet.Result != null);
        }
Example #8
0
 public OperationResult Create(ReservedQueue item)
 {
     try
     {
         _dao.Create(item);
         return(new OperationResult()
         {
             Success = true
         });
     }
     catch (Exception e)
     {
         return(new OperationResult()
         {
             Success = false, Exception = e
         });
     }
 }
Example #9
0
        public async Task <OperationResult> CreateAsync(ReservedQueue item)
        {
            try
            {
                await _dao.CreateAsync(item);

                return(new OperationResult()
                {
                    Success = true
                });
            }
            catch (Exception e)
            {
                return(new OperationResult()
                {
                    Success = false, Exception = e
                });
            }
        }
 public void Create(ReservedQueue queue)
 {
     _context.ReservedQueues.Add(queue);
     _context.SaveChanges();
 }
 public async Task DeleteAsync(ReservedQueue queue)
 {
     queue.IsDeleted = true;
     await UpdateAsync(queue);
 }
 public void Delete(ReservedQueue queue)
 {
     queue.IsDeleted = true;
     Update(queue);
 }
 public async Task UpdateAsync(ReservedQueue queue)
 {
     _context.Entry(queue).State = EntityState.Modified;
     await _context.SaveChangesAsync();
 }
 public void Update(ReservedQueue queue)
 {
     _context.Entry(queue).State = EntityState.Modified;
     _context.SaveChanges();
 }
        public async Task CreateAsync(ReservedQueue queue)
        {
            await _context.ReservedQueues.AddAsync(queue);

            await _context.SaveChangesAsync();
        }
 public bool CompareToModel(ReservedQueue model)
 {
     return(EstablishmentId == model.EstablishmentId && ProfileId == model.ProfileId);
 }
 public ReservedQueue ToModel(ReservedQueue model)
 {
     model.EstablishmentId = EstablishmentId;
     model.ProfileId       = ProfileId;
     return(model);
 }