public async Task <IActionResult> Create(RentalDTO rentalDTO)
        {
            try
            {
                rentalDTO.AppUser = await _applicationUserService.GetCurrentUserAsync(HttpContext);

                rentalDTO.Car = await _carService.GetAsync(rentalDTO.CarId);

                if (ModelState.IsValid)
                {
                    await _rentalService.CreateAsync(rentalDTO);

                    return(RedirectToAction(nameof(Index)));
                }

                var errors = ModelState
                             .Where(x => x.Value.Errors.Count > 0)
                             .Select(x => new { x.Key, x.Value.Errors })
                             .ToArray();
            }
            catch (DbUpdateException /* ex */)
            {
                //Log the error (uncomment ex variable name and write a log.
                ModelState.AddModelError("", "Unable to save changes. " +
                                         "Try again, and if the problem persists " +
                                         "see your system administrator.");
            }
            // return View(rentalDTO);
            return(RedirectToAction("Rent"));
        }
示例#2
0
        public IHttpActionResult ReturnRental(RentalDTO rentals)
        {
            var customer = _context.Customers.Single(
                c => c.Id == rentals.CustomerId);

            if (customer == null)
            {
                return(BadRequest());
            }

            var customerRentals = _context.Rentals
                                  .Include(r => r.Movie)
                                  .Where(r => r.DateReturned == null)
                                  .Where(r => rentals.ids.Contains(r.Id));

            foreach (var rental in customerRentals)
            {
                if (rental.DateReturned != null)
                {
                    return(BadRequest("Cannot return movie, already returned."));
                }

                rental.Movie.NumberAvailable++;

                rental.DateReturned = DateTime.Now;
            }

            _context.SaveChanges();

            return(Ok());
        }
示例#3
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            using (RentalService rentalService = new RentalService())
            {
                DialogResult dr = MessageBox.Show("Güncellemek istediğinize emin misiniz?", "Onay", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

                if (dr == DialogResult.Yes)
                {
                    RentalDTO rental = new RentalDTO
                    {
                        RentalId   = (int)lstBoxRental.SelectedValue,
                        CustomerId = (int)cmbCustomer.SelectedValue,
                        MovieId    = (int)cmbMovieName.SelectedValue,
                        BeginDate  = dtpBegin.Value,
                        EndDate    = dtpBegin.Value,
                        TotalPrice = Convert.ToDecimal(txtPrice.Text),

                        CreatedBy      = 2,
                        RecordStatusId = Convert.ToByte(cbRecordStatus.SelectedValue)
                    };
                    var result = rentalService.Update(rental);
                    lstBoxRental.DataSource = rentalService.List();
                    if (result)
                    {
                        MessageBox.Show("Güncelleme başarılı", "Durum", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        MessageBox.Show("Güncelleme sırasında bir hata oluştu", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
示例#4
0
        public IHttpActionResult CreateRental(RentalDTO rentalDto)
        {
            var customer = _context.Customers
                           .Single(c => c.Id == rentalDto.CustomerID);

            //Load Multiple Movies
            var movies = _context.Movies
                         .Where(m => rentalDto.MovieIds.Contains(m.Id)).ToList();

            //Check Availability
            foreach (var movie in movies)
            {
                if (movie.NumberAvailable == 0)
                {
                    return(BadRequest("Movie is NOT available."));
                }

                movie.NumberAvailable--;

                var rental = new Rental
                {
                    Customer   = customer,
                    Movie      = movie,
                    DateRented = DateTime.Now
                };
                _context.Rentals.Add(rental);
            }
            _context.SaveChanges();

            return(Ok());
        }
示例#5
0
        public IHttpActionResult CreateNewRentals(RentalDTO newRental)
        {
            var customer = _DBContext.Customers.Single(c => c.Id == newRental.CustomerID);

            var movies = _DBContext.Movies.Where(m => newRental.MovieIDs.Contains(m.Id)).ToList();

            foreach (var movie in movies)
            {
                if (movie.NumberAvailable == 0)
                {
                    return(BadRequest("Movie is not available"));
                }

                movie.NumberAvailable--;

                var rental = new Rental
                {
                    Customer   = customer,
                    Movie      = movie,
                    DateRented = DateTime.Now
                };

                _DBContext.Rentals.Add(rental);
            }

            _DBContext.SaveChanges();
            return(Ok());
        }
        public void ShouldSendRentalViewModelMessageWithContinueRentalPropertyIfDriverHasActiveRental()
        {
            //assign
            var driverId        = Guid.NewGuid();
            var driverViewModel = new DriverViewModel()
            {
                Id = driverId
            };
            var activeRentalDto = new RentalDTO();

            _rentalServiceMock.GetActiveRentalForDriver(driverId).Returns(activeRentalDto);

            var activeRentalViewModel = new RentalViewModel();

            _rentalViewModelMapperMock.Map(activeRentalDto).Returns(activeRentalViewModel);

            //act
            var sut = new RentCarViewModel(_carServiceMock, _rentalServiceMock, _carViewModelMapperMock, _rentalViewModelMapperMock, _messengerServiceMock);

            sut.AssignLoggedInDriver(driverViewModel);

            //assert
            _messengerServiceMock.Received().Send(Arg.Is <RentalViewModelMessage>(message => message.RentalViewModel == activeRentalViewModel && message.MessageType == RentalViewModelMessageType.ContinueRental));
            _messengerServiceMock.Received().Send(Arg.Is <NotificationMessage>(message => message.Notification == "Start Car Rental"));
        }
示例#7
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            using (RentalService rentalService = new RentalService())
            {
                DialogResult dr = MessageBox.Show("Kaydetmek istediğinize emin misiniz?", "Onay", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

                if (dr == DialogResult.Yes)
                {
                    RentalDTO rental = new RentalDTO
                    {
                        CustomerId = (int)(cmbCustomer.SelectedValue),
                        MovieId    = (int)(cmbMovieName.SelectedValue),
                        BeginDate  = dtpBegin.Value,
                        EndDate    = dtpEnd.Value,
                        TotalPrice = Convert.ToDecimal(txtPrice.Text),

                        CreatedBy = 2,
                    };

                    var result = rentalService.Add(rental);

                    if (result != null)
                    {
                        MessageBox.Show("Kayıt başarılı", "Durum", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        MessageBox.Show("Kayıt sırasında bir hata oluştu", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
示例#8
0
        private void AssignAdditionalValues(RentalDTO rentalDto)
        {
            var driver = _unitOfWork.DriverRepository.Get(rentalDto.DriverId);
            var car    = _unitOfWork.CarRepository.Get(rentalDto.CarId);

            rentalDto.DriverName         = driver.FirstName + " " + driver.LastName;
            rentalDto.RegistrationNumber = car.RegistrationNumber;
            rentalDto.PricePerMinute     = car.PricePerMinute.Amount;
        }
示例#9
0
 private static Rental CreateRentalFromDTO(RentalDTO rental)
 {
     return(Rental.Create(
                rental.CarId,
                rental.AppUserId,
                rental.StartCarRentalDate,
                rental.EndCarRentalDate,
                rental.PricePerDay));
 }
        public ActionResult <RentalDTO> RentABook([FromBody] RentalDTO bookToLend)
        {
            var rental = _rentalService.RentABook(_rentalMapper.FromRentalDTOToRental(bookToLend));

            if (rental == null)
            {
                return(BadRequest("bad input"));
            }
            return(Ok(_rentalMapper.FromRentalToRentalDTO(rental)));
        }
示例#11
0
        public IHttpActionResult UpdateRental([FromBody] RentalDTO rd)
        {
            bool b = Bl.RentalBL.UpdateRental(rd);

            if (b)
            {
                return(Ok());
            }
            return(BadRequest());
        }
示例#12
0
 public Rental FromRentalDTOToRental(RentalDTO rentalDTO)
 {
     return(new Rental
     {
         Isbn = rentalDTO.Isbn,
         RentalId = rentalDTO.UniqueRentalId,
         UserId = rentalDTO.UserIdNumber,
         EndDate = rentalDTO.EndDate
     });
 }
        public IActionResult Search(RentalDTO rental)
        {
            var startDate = rental.StartCarRentalDate;
            var endDate   = rental.EndCarRentalDate;

            return(RedirectToAction("Index", "Cars",
                                    new
            {
                StartDate = startDate,
                EndDate = endDate
            }));
        }
示例#14
0
        public ActionResult ReturnBook(RentalDTO model)
        {
            if (model == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var rental = DependencyResolver.Current.GetService <IRental>();

            Mapper.Map(model, rental);
            _rentalServices.ReturnBook(rental);

            return(RedirectToAction("Index"));
        }
 public RentalViewModel Map(RentalDTO rentalDto)
 {
     return(new RentalViewModel()
     {
         RentalId = rentalDto.Id,
         DriverName = rentalDto.DriverName,
         PricePerMinute = $"{rentalDto.PricePerMinute:0.00}",
         RegistrationNumber = rentalDto.RegistrationNumber,
         StartDateTime = rentalDto.StartDateTime,
         StopDateTime = rentalDto.StopDateTime,
         Total = rentalDto.Total
     });
 }
示例#16
0
        public IHttpActionResult CreateRental(RentalDTO rentalDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Model is not valid"));
            }

            var customer = db.Customers.SingleOrDefault
                               (c => c.Id == rentalDto.CustomerId);

            if (customer == null)
            {
                return(BadRequest("CustomerId is not valid"));
            }

            if (rentalDto.MovieIds == null || rentalDto.MovieIds.Count == 0)
            {
                return(BadRequest("No MoviesIds have been given."));
            }

            // SELECT * FROM Movies WHERE Id IN (1,2,3):
            var movies = db.Movies.Where
                             (m => rentalDto.MovieIds.Contains(m.Id)).ToList();

            if (movies.Count != rentalDto.MovieIds.Count)
            {
                return(BadRequest("One or more MovieIds are invalid."));
            }

            foreach (var movie in movies)
            {
                if (movie.NumberAvailable == 0)
                {
                    return(BadRequest("'" + movie.Name + "' is not Available"));
                }
                movie.NumberAvailable--;
                var rental = new Rental
                {
                    Customer   = customer,
                    Movie      = movie,
                    DateRented = DateTime.Now
                };

                db.Rental.Add(rental);
            }

            db.SaveChanges();
            return(Created("Rental(s) created successfully", ""));
        }
示例#17
0
        public async Task CreateAsync(RentalDTO rental)
        {
            var rentalToCheck = await _rentalRepository.GetAsync(rental.Id);

            if (rentalToCheck != null)
            {
                throw new Exception($"Rental with id: {rental.Id} already exists.");
            }

            var rentalToAdd = CreateRentalFromDTO(rental);

            await _rentalRepository.AddAsync(rentalToAdd);

            await _rentalRepository.SaveAsync();
        }
示例#18
0
        public IHttpActionResult CreateRental(RentalDTO rental)
        {
            if (rental.movieids.Count == 0)
            {
                return(BadRequest("No movies selected"));
            }

            var customer = context.Customers.SingleOrDefault(
                c => c.Id == rental.customerid);

            if (customer == null)
            {
                return(BadRequest("Customer is not valid"));
            }

            var movies = context.Movies.Where(
                m => rental.movieids.Contains(m.Id)).ToList();

            if (movies.Count != rental.movieids.Count)
            {
                return(BadRequest("One or more movies are invalid"));
            }

            foreach (var movie in movies)
            {
                if (movie.NumberAvailable == 0)
                {
                    return(BadRequest($"Movie {movie.Name} is not available."));
                }

                movie.NumberAvailable--;

                var newRental = new Rental
                {
                    Customer   = customer,
                    Movie      = movie,
                    DateRented = DateTime.Now
                };

                context.Rentals.Add(newRental);
            }

            context.SaveChanges();

            return(Ok());
        }
示例#19
0
        public void Update()
        {
            RentalDTO rental = new RentalDTO
            {
                RentalId       = 1,
                CustomerId     = 1,
                MovieId        = 1,
                BeginDate      = new DateTime(2019, 03, 15),
                EndDate        = new DateTime(2019, 03, 30),
                TotalPrice     = 15,
                CreatedDate    = DateTime.Now,
                CreatedBy      = 2,
                RecordStatusId = 2
            };
            var result = rentalService.Update(rental);

            Assert.IsNotNull(result);
        }
示例#20
0
        public IHttpActionResult RentMovie(RentalDTO rental)
        {
            var customer = _context.Customers.SingleOrDefault(c => c.ID == rental.CustomerID);
            var movies   = _context.Movies.Where(m => rental.MovieID.Contains(m.ID)).ToList();

            if (customer == null)
            {
                return(BadRequest("CustomerID is not valid."));
            }
            if (movies.Count <= 0)
            {
                return(BadRequest("No Movies Found."));
            }
            ;

            if (movies.Count != rental.MovieID.Count())
            {
                return(BadRequest("One or More Movie has an invalid ID"));
            }


            foreach (var movie in movies)
            {
                if (movie.NoAvailable == 0)
                {
                    return(BadRequest(movie.Name + " is not available"));
                }

                movie.NumberInStock--;

                var newRental = new Rental
                {
                    Customer   = customer,
                    Movie      = movie,
                    DateRented = DateTime.Now
                };

                _context.Rentals.Add(newRental);
            }
            _context.SaveChanges();

            return(Ok());
        }
示例#21
0
文件: RentalBL.cs 项目: leahr0040/C-
        public static bool UpdateRental(RentalDTO rd)
        {
            using (ArgamanExpressEntities db = new ArgamanExpressEntities())
            {
                Rental r = db.Rentals.Find(rd.RentalID);
                r.PropertyID    = rd.PropertyID;
                r.SubPropertyID = rd.SubPropertyID;
                r.UserID        = rd.UserID;
                r.RentPayment   = rd.RentPayment;
                r.PaymentTypeID = rd.PaymentTypeID;
                r.EnteryDate    = rd.EnteryDate;
                r.EndDate       = rd.EndDate;
                if (r.ContactRenew != rd.ContactRenew)
                {
                    if (rd.ContactRenew == true && rd.EndDate.Value < DateTime.Today.AddMonths(3))
                    {
                        Bl.TaskBL.AddRenewTask(rd.PropertyID, rd.SubPropertyID);
                    }
                    else
                    {
                        getAllTasks_Result task = db.getAllTasks().Where(t => t.PropertyID == rd.PropertyID && t.TaskTypeId == 2 && t.status == true && t.SubPropertyID == rd.SubPropertyID).FirstOrDefault();
                        if (task != null)
                        {
                            Bl.TaskBL.DeleteTask(task.TaskID);
                        }
                    }
                }
                r.ContactRenew = rd.ContactRenew;

                if (rd.Dock != null)
                {
                    Document doc = new Document();
                    doc.DocCoding = rd.Dock;
                    doc.DocUser   = rd.RentalID;
                    doc.type      = 3;
                    doc.DocName   = rd.DocName;
                    DocumentBL.AddUserDocuments(new DocumentDTO(doc));
                }
                db.SaveChanges();
                return(true);
            }
            return(false);
        }
        public IHttpActionResult CreateRental(RentalDTO rentalDto)
        {
            if (rentalDto.MovieIds.Count == 0)
            {
                return(BadRequest("No movies were sent in the rental request"));
            }

            var customer = _context.Customers.SingleOrDefault(c => c.Id == rentalDto.CustomerId);

            if (customer == null)
            {
                return(BadRequest("Customer ID is invalid"));
            }

            var movies = _context.Movies.Where(m => rentalDto.MovieIds.Contains(m.Id)).ToList();

            if (movies.Count != rentalDto.MovieIds.Count)
            {
                return(BadRequest("One or more movie ids are invalid"));
            }

            foreach (var movie in movies)
            {
                if (movie.NumberAvailable == 0)
                {
                    return(BadRequest(movie.Name + " is unavailable"));
                }

                movie.NumberAvailable--;

                var rental = new Rental()
                {
                    Customer   = customer,
                    DateRented = DateTime.Now,
                    Movie      = movie
                };
                _context.Rentals.Add(rental);
            }

            _context.SaveChanges();

            return(Ok());
        }
示例#23
0
        public IHttpActionResult CreateNewRentals(RentalDTO rental)
        {
            if (rental.MovieIds.Count == 0)
            {
                return(BadRequest("No Movies are selected"));
            }
            var customer = _context.Customers.SingleOrDefault(c => c.Id == rental.CustomerId);

            if (customer == null)
            {
                return(BadRequest("Customer Id is invalid"));
            }


            var movies = _context.Movies.Where(M => rental.MovieIds.Contains(M.Id)).ToList();

            if (movies.Count != rental.MovieIds.Count)
            {
                return(BadRequest("One Or More Movie Ids are invalid"));
            }


            foreach (var movie in movies)
            {
                if (movie.NumberAvailable == 0)
                {
                    return(BadRequest("This Movie'" + movie.Name + "'Isn't available"));
                }
                movie.NumberAvailable--;

                var newRental = new Rental
                {
                    Customer   = customer,
                    Movie      = movie,
                    DateRented = DateTime.Now
                };

                _context.Rentals.Add(newRental);
            }
            _context.SaveChanges();
            return(Ok());
        }
        public IHttpActionResult CreateNewRentals(RentalDTO newRental)
        {
            var customer = _context.Customers.Single(
                c => c.Id == newRental.CustomerId);


            var movie = _context.Movies.Single(
                m => m.Id == newRental.MovieIds);

            //var movies = _context.Movies.Where(
            // m => newRental.MoviesIds.Contains(m.Id)).ToList();

            /*foreach (var movie in movies)
             * {
             *  //if (movie.NumberAvailable == 0)
             *    //  return BadRequest("Movie is not available.");
             *
             * // movie.NumberAvailable--;
             *
             *  var rental = new Rental
             *  {
             *      Customer = customer,
             *      Movie = movie,
             *      DateRented = DateTime.Now
             *  };
             *
             *  _context.Rental.Add(rental);
             * }*/
            var rental = new Rental
            {
                Customer   = customer,
                Movie      = movie,
                DateRented = DateTime.Now
            };

            _context.Rental.Add(rental);

            _context.SaveChanges();

            return(Ok());
        }
示例#25
0
        public IHttpActionResult NewRental(RentalDTO rentalDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            foreach (var rentDetail in rentalDto.RentalDetails)
            {
                if (UOW.MovieRepository.Find(m => m.ID == rentDetail.MovieID)
                    .SingleOrDefault().NumberInStock < rentDetail.quantity)
                {
                    return(BadRequest("Movie is not available"));
                }
            }

            UOW.RentalRepository.Add(ObjectMapper.Mapper.Map <RentalDTO, Rental>(rentalDto));
            UOW.Complete();
            UOW.Dispose();

            return(Ok());
        }
        public IHttpActionResult CreateNewRentals(RentalDTO newRental)
        {
            if (newRental.MovieIds.Count == 0)
            {
                return(BadRequest("No Movie Ids have been given"));
            }

            var customer = _context.Customers.Single(c => c.id == newRental.CustomerId);

            var movies = _context.Movies.Where(m => newRental.MovieIds.Contains(m.Id)).ToList();

            if (movies.Count != newRental.MovieIds.Count)
            {
                return(BadRequest("One or more MovieIds are invalid"));
            }

            foreach (var movie in movies)
            {
                if (movie.NumberAvailable == 0)
                {
                    return(BadRequest("Movie is not available"));
                }

                movie.NumberAvailable--;

                var rental = new Rental
                {
                    customer   = customer,
                    movie      = movie,
                    DateRented = DateTime.Now
                };

                _context.Rentals.Add(rental);
            }

            _context.SaveChanges();

            return(Ok());
        }
示例#27
0
        public ObjectResponse <List <RentalDTO> > GetRentals(RentalFilters rentalFilters)
        {
            try
            {
                var response = _unitOfWork.RentalsRepository.GetAll().Include(x => x.copy).Include(x => x.copy.movy).Include(y => y.client);
                if (rentalFilters.ClientId.HasValue)
                {
                    response = response.Where(x => x.client_id == rentalFilters.ClientId.Value);
                }

                if (rentalFilters.RentalDateFrom.HasValue)
                {
                    var datefrom = rentalFilters.RentalDateFrom.Value.Date;
                    response = response.Where(x => x.date_of_rental.Value.CompareTo(datefrom) >= 0);
                }

                if (rentalFilters.RentalDateTo.HasValue)
                {
                    var dateTo = rentalFilters.RentalDateTo.Value.Date.AddDays(1);
                    response = response.Where(x => x.date_of_rental.Value.CompareTo(dateTo) < 0);
                }

                if (rentalFilters.DaysOverDue > 0)
                {
                    response = response.Where(x => DbFunctions.DiffDays(x.date_of_rental.Value, DateTime.Now) >= rentalFilters.DaysOverDue && !x.date_of_return.HasValue);
                }

                return(new ObjectResponse <List <RentalDTO> > {
                    Success = true, Data = response.ToList()?.Select(x => RentalDTO.Create(x))?.ToList()
                });
            }
            catch (Exception ex)
            {
                return(new ObjectResponse <List <RentalDTO> > {
                    Success = false, Error = ex.GetBaseException().Message, Info = DB_GET_ERROR
                });
            }
        }
        public async Task <IActionResult> Rent(int carId, DateTime startDate, DateTime endDate)
        {
            int daysBetween = CountDaysBetween(startDate, endDate);

            var car = await _carService.GetAsync(carId);

            var price     = daysBetween * car.Price;
            var appUserId = await _applicationUserService.GetCurrentUserIdAsync(HttpContext);

            var rentalDTO = new RentalDTO
            {
                CarId              = carId,
                Car                = car,
                AppUserId          = appUserId,
                StartCarRentalDate = startDate,
                EndCarRentalDate   = endDate,
                PricePerDay        = car.Price,
                FullPrice          = price,
                RentalInDays       = daysBetween,
            };

            return(View(rentalDTO));
        }
示例#29
0
        public RentalDTO toDTO()
        {
            RentalDTO dto = new RentalDTO()
            {
                RentalID   = this.RentalID,
                LentOn     = this.LentOn,
                DueDate    = this.DueDate,
                Price      = this.Price,
                ReturnedOn = this.ReturnedOn,

                ClientID   = this.ClientID,
                ClientName = this.Client.FirstMidName + " " + this.Client.LastName,

                CopyID    = this.CopyID,
                GameTitle = (this.Copy.Game.Title + " (" +
                             this.Copy.Game.Year.Year + ", " +
                             this.Copy.Game.Publisher.Name + ")"),

                GameID    = this.Copy.GameID,
                GameValue = this.Copy.Game.Value
            };

            return(dto);
        }
示例#30
0
文件: RentalBL.cs 项目: leahr0040/C-
        public static bool AddRental(RentalDTO rd)
        {
            Rental r  = RentalDTO.ToDal(rd);
            int    id = RentalDAL.AddRental(r);

            if (id != 0)
            {
                if (rd.Dock != null)
                {
                    Document doc = new Document();
                    doc.DocCoding = rd.Dock;
                    doc.DocUser   = id;
                    doc.type      = 3;
                    doc.DocName   = rd.DocName;
                    DocumentBL.AddUserDocuments(new DocumentDTO(doc));
                }
                if (rd.ContactRenew == true && (rd.EndDate).Value < DateTime.Today.AddMonths(3))
                {
                    Bl.TaskBL.AddRenewTask(rd.PropertyID, rd.SubPropertyID);
                }
                return(true);
            }
            return(false);
        }