コード例 #1
0
        /// <summary>
        /// Allows to fetch reservation according to specified options:
        /// Booked / Canceled / Picked-up / Returned
        /// Picked-up date-time from
        /// Picked-up date-time to
        /// Client full name or email or phone number
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public RezervationCollectionModel FindRezervations(RezervationBrowsingParams parameters)
        {
            if (parameters == null)
            {
                throw new InvalidParameterException(nameof(parameters));
            }

            var dbRezervations = this.dbContext.Rezervations.AsQueryable();

            if (!string.IsNullOrWhiteSpace(parameters.ClientEmail))
            {
                dbRezervations = dbRezervations.Include(x => x.ClientAccount).Where(x => x.ClientAccount.Email == parameters.ClientEmail);
            }

            if (!string.IsNullOrWhiteSpace(parameters.ClientFullName))
            {
                dbRezervations = dbRezervations.Include(x => x.ClientAccount).Where(x => x.ClientAccount.FullName == parameters.ClientFullName);
            }

            if (!string.IsNullOrWhiteSpace(parameters.ClientPhone))
            {
                dbRezervations = dbRezervations.Include(x => x.ClientAccount).Where(x => x.ClientAccount.Phone == parameters.ClientPhone);
            }

            if (parameters.PickUpDateFrom.HasValue)
            {
                dbRezervations = dbRezervations.Where(x => x.PickUpDate >= parameters.PickUpDateFrom);
            }

            if (parameters.PickUpDateTo.HasValue)
            {
                dbRezervations = dbRezervations.Where(x => x.PickUpDate <= parameters.PickUpDateTo);
            }

            if (parameters.IsBooked)
            {
                dbRezervations = dbRezervations.Where(x => !x.IsCancelled && !x.IsPickedUp && !x.IsReturned);
            }

            if (parameters.IsReturned)
            {
                dbRezervations = dbRezervations.Where(x => x.IsReturned);
            }

            if (parameters.IsPickedUp)
            {
                dbRezervations = dbRezervations.Where(x => x.IsPickedUp && !x.IsCancelled);
            }

            if (parameters.IsCancelled)
            {
                dbRezervations = dbRezervations.Where(x => x.IsCancelled);
            }

            return(new RezervationCollectionModel(dbRezervations.ToList().Select(x => x.ToModel()).ToList(), parameters.StartIndex, parameters.MaxItems));
        }
コード例 #2
0
        public RezervationCollectionModel GetAllRezervations(RezervationBrowsingParams parameters)
        {
            if (parameters == null)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest)
                {
                    ReasonPhrase = "Invalid parameters."
                });
            }

            return(this.rezervationService.FindRezervations(parameters));
        }
コード例 #3
0
        public void FindRezervationsTest()
        {
            using (var context = new CarRentalDbContext(this.dbContextOptions))
            {
                var dbRezervations       = context.Rezervations.ToList();
                var clientAccountService = new ClientAccountService(context);
                var rezervationService   = new RezervationService(context, clientAccountService);

                var parameters = new RezervationBrowsingParams
                {
                    ClientEmail    = "*****@*****.**",
                    ClientFullName = "Client Name 1",
                    ClientPhone    = "+11111",
                    PickUpDateFrom = DateTime.Today.AddDays(1),
                    PickUpDateTo   = DateTime.Today.AddDays(2),
                    IsBooked       = true,
                };

                var rezervations = rezervationService.FindRezervations(parameters);
                Assert.IsTrue(rezervations.Count == 1);

                parameters = new RezervationBrowsingParams
                {
                    ClientEmail    = "*****@*****.**",
                    ClientFullName = "Client Name 1",
                    ClientPhone    = "+11111",
                    PickUpDateFrom = DateTime.Today.AddDays(1),
                    PickUpDateTo   = DateTime.Today.AddDays(2),
                    IsPickedUp     = true,
                };

                rezervations = rezervationService.FindRezervations(parameters);
                Assert.IsTrue(rezervations.Count == 2);

                parameters = new RezervationBrowsingParams
                {
                    IsCancelled = true,
                };

                rezervations = rezervationService.FindRezervations(parameters);
                Assert.IsTrue(rezervations.Count == 1);

                parameters = new RezervationBrowsingParams
                {
                    IsReturned = true,
                };

                rezervations = rezervationService.FindRezervations(parameters);
                Assert.IsTrue(rezervations.Count == 2);

                parameters = new RezervationBrowsingParams
                {
                    MaxItems   = 2,
                    StartIndex = 1,
                };

                rezervations = rezervationService.FindRezervations(parameters);
                Assert.IsTrue(rezervations.Count == 2);

                try
                {
                    rezervationService.FindRezervations(null);
                    Assert.Fail();
                }
                catch (InvalidParameterException)
                {
                }
                catch
                {
                    Assert.Fail();
                }
            }
        }