Beispiel #1
0
        private RentRequestResponse RentCars(IEnumerable <Car> cars, RentRequest request)
        {
            RentRequestResponse response = new RentRequestResponse();

            foreach (Car car in cars)
            {
                RentCar(car, request.CompanyId.Value, request.Days);

                request.Company.BonusPoints += car.BonusPointsPerRental;

                response.CarResults.Add(new RentCarResponse()
                {
                    Status    = RentCarStatus.Succeded,
                    Message   = $"CarId {car.Id} rented successfully by companyId {request.CompanyId}.",
                    RentPrice = car.PricePerDay * request.Days
                });
            }

            response.Status             = RentCarResponseStatus.Succeded;
            request.Status              = RentCarResponseStatus.Succeded;
            request.StatusMessage       = "Rental request Succeded!";
            request.Company.UpdatedDate = DateTime.Now;
            _unitOfWork.Companies.Update(request.Company);
            return(response);
        }
        public ActionResult AddRent(RentViewModel rentModel)
        {
            var planes = PlaneRequests.GetAvailablePlanes(new PlaneViewModel
            {
                StartCountPlaces = rentModel.StartCountPlaces,
                EndCountPlaces   = rentModel.EndCountPlaces,
                CountPlanes      = rentModel.CountPlanes
            });

            rentModel.Planes    = new List <RentPlane>(rentModel.CountPlanes);
            rentModel.CompanyId = CurrentUser.User.UserId;

            planes.ForEach(x => rentModel.Planes.Add(new RentPlane
            {
                PlaneId = x.PlaneId
            }));

            var isSuccess = RentRequest.AddRent(rentModel);

            if (!isSuccess || !ModelState.IsValid)
            {
                return(View("AddRent"));
            }

            return(RedirectToAction("CompanyRents", "Rents"));
        }
Beispiel #3
0
    public IEnumerator callContract(ContractName contractName, object arg0, object arg1)
    {
        var address = ConvertHexStringToByteArray("cf2cc8dcffc74cfe0a079fdbb16c0d6f78290527bfbcef935553d50746ecc00f");

        switch (contractName)
        {
        case ContractName.Win:
            var winReq = new WinRequest(address);
            yield return(winReq.Win((byte[])arg0, (string)arg1));

            printProcessResult(winReq);     //log
            break;

        case ContractName.Rent:
            var rentReq = new RentRequest(address);
            yield return(rentReq.Rent((string)arg0, (int)arg1));

            printProcessResult(rentReq);
            break;

        case ContractName.CreatePatent:
            var patentReq = new NewVirusRequest(address);
            yield return(patentReq.NewVirus((string)arg0, (int)arg1));

            printProcessResult(patentReq);

            break;
        }
    }
        public async Task <IActionResult> Put([FromBody] RentRequest request)
        {
            var productId = Guid.Parse(request.ProductId);
            var clientId  = Guid.Parse(request.ClientId);
            var status    = StatusHelper.Parse(request.Details?.Status);
            var until     = request.Details?.Until != null?DateHelper.Parse(request.Details.Until) : (DateTime?)null;

            using var ctx = serviceProvider.GetService <IVideoclubDbContext>();
            var rent = await GetRent(ctx, productId, clientId).ConfigureAwait(false);

            var isNew = rent is null;

            if (isNew)
            {
                rent = new Rent(productId, clientId, status, until);
                ctx.Rents.Add(rent);
            }
            else
            {
                rent.ChangeStatus(status, until);
            }
            await ctx.SaveChangesAsync().ConfigureAwait(false);

            var result = mapper.Map <RentResponse>(rent);

            return(isNew ? Created(UrlUtls.URI(this, nameof(RentController), nameof(RentController.Get), new { productId, clientId, version = "1.0" }), result)
                         : (IActionResult)Ok(result));
        }
Beispiel #5
0
        public async Task <RentRequestResponse> CreateRentAsync(RentRequest request)
        {
            RentRequestResponse response = new RentRequestResponse();

            IEnumerable <Car> cars = await _fleetService.GetAsync(x => request.CarIds.Contains(x.Id));

            IEnumerable <Car> alreadyRentedCars = cars.Where(x => x.Rented);

            request.Company = await _unitOfWork.Companies.GetByIDAsync(request.CompanyId);

            if (request.Company == null)
            {
                response.Status  = RentCarResponseStatus.Failed;
                response.Message = $"Company with Id {request.CompanyId} does not exists.";
                return(response);
            }
            try
            {
                if (alreadyRentedCars.Any())
                {
                    request.Status        = RentCarResponseStatus.Failed;
                    request.StatusMessage = $"Some of the cars are already rented. {Environment.NewLine} {string.Join(',', alreadyRentedCars.Select(x => x.Id + Environment.NewLine))}";

                    response.Status  = RentCarResponseStatus.Failed;
                    response.Message = $"Cars provided cannot be rented. The following cars are already rented, remove them from the request: {Environment.NewLine} {string.Join(Environment.NewLine, alreadyRentedCars.Select(x => x.Id + Environment.NewLine))}";
                }
                else if (cars.Any())
                {
                    response = RentCars(cars, request);
                }
                else
                {
                    request.Status        = RentCarResponseStatus.Failed;
                    request.StatusMessage = $"0 carIds provided.";
                    response.Status       = RentCarResponseStatus.Failed;
                    response.Message      = $"Please provide atleast one(1) carId in the rentalRequest.";
                }
            }
            catch (Exception ex)
            {
                request.Status        = RentCarResponseStatus.Failed;
                request.StatusMessage = $"Some error ocurred while processing the rental request.Rollback executed {Environment.NewLine}{ex.ToString()}";
                response.Status       = RentCarResponseStatus.Failed;
                response.Message      = $"Some error ocurred while processing the rental request {ex.Message}";
                await _unitOfWork.RentalRequests.InsertAsync(request);

                _unitOfWork.Rollback();
            }
            finally
            {
                await _unitOfWork.RentalRequests.InsertAsync(request);

                _unitOfWork.Commit();
            }
            return(response);
        }
        public ActionResult CompleteRent(RentViewModel rent)
        {
            var isSuccess = RentRequest.CompleteRent(rent);

            if (!isSuccess || !ModelState.IsValid)
            {
                return(View("CompleteRent"));
            }

            return(RedirectToAction("CompanyRents", "Rents"));
        }
Beispiel #7
0
        public ActionResult DeleteConfirmed(int id)
        {
            RentRequest rentrequest = db.RentRequests.Find(id);

            if (rentrequest != null)
            {
                rentrequest.IsDelete        = true;
                db.Entry(rentrequest).State = EntityState.Modified;
            }
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Beispiel #8
0
 public ActionResult Edit([Bind(Include = "Id,FromPlace,ToPlace,StartDateTime,EndDateTime,AirCondition,VehicleQty,Description,CustomerId,VehicleTypeId")] RentRequestViewModel rentrequestviewModel)
 {
     if (ModelState.IsValid)
     {
         RentRequest rentrequest = Mapper.Map <RentRequest>(rentrequestviewModel);
         db.Entry(rentrequest).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.CustomerId    = new SelectList(db.Customers, "Id", "Name", rentrequestviewModel.CustomerId);
     ViewBag.VehicleTypeId = new SelectList(db.VehicleTypes, "Id", "Name", rentrequestviewModel.VehicleTypeId);
     return(View(rentrequestviewModel));
 }
Beispiel #9
0
        public async Task <IActionResult> Update(RentRequest request, string id)
        {
            if (request == null || string.IsNullOrEmpty(id))
            {
                return(BadRequest("??"));
            }

            var result = await _rent.Update(request, id);

            if (result == 0)
            {
                return(BadRequest("??"));
            }
            return(Ok($"Update {id} successed"));
        }
Beispiel #10
0
 public async Task <int> Update(RentRequest request, string id)
 {
     if (ID.Contains(id))
     {
         var result = _context.Rents.Find(id);
         if (result != null)
         {
             result.idMotel    = request.idMotel;
             result.IDcustomer = request.IDcustomer;
             result.Start      = request.Start;
             result.End        = request.End;
             _context.Rents.Update(result);
             return(await _context.SaveChangesAsync());
         }
     }
     return(0);
 }
Beispiel #11
0
        // GET: /RentRequest/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            RentRequest rentrequest = db.RentRequests.Include(c => c.VehicleType).Include(c => c.Customer).Include(c => c.RentAssigns).SingleOrDefault(d => d.Id == id);

            if (rentrequest == null)
            {
                return(HttpNotFound());
            }
            RentRequestViewModel rentrequestViewMOdel = Mapper.Map <RentRequestViewModel>(rentrequest);

            return(View(rentrequestViewMOdel));
        }
        public async Task <IActionResult> Update([FromRoute] Guid rentId, [FromBody] RentRequest request)
        {
            var rent = await _rentsService.GetByIdAsync(rentId);

            rent.ProductionInformationId = request.ProductionInformationId;
            rent.StartDate      = request.StartDate;
            rent.EndDate        = request.EndDate;
            rent.InsurancePrice = request.InsurancePrice;
            rent.RentPrice      = request.RentPrice;

            var updated = await _rentsService.UpdateAsync(rent);

            if (updated)
            {
                return(Ok(RentToRentResponse(rent)));
            }
            return(NotFound());
        }
Beispiel #13
0
        public ActionResult Create([Bind(Include = "Id,FromPlace,ToPlace,StartDateTime,EndDateTime,AirCondition,VehicleQty,Description,CustomerId,VehicleTypeId")] RentRequestViewModel rentRequestViewModel)
        {
            if (ModelState.IsValid)
            {
                var loginCustomerId = User.Identity.GetUserId();
                var customer        = db.Customers.FirstOrDefault(c => c.UserId == loginCustomerId);

                if (customer == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }
                RentRequest rentRequest = Mapper.Map <RentRequest>(rentRequestViewModel);
                rentRequest.CustomerId = customer.Id;
                db.RentRequests.Add(rentRequest);
                var isSave = db.SaveChanges() > 0;

                if (isSave)
                {
                    Notification notification = new Notification();
                    notification.Status              = "New";
                    notification.Details             = "New rent request ";
                    notification.NotificatinDateTime = DateTime.Now;
                    notification.CustomerId          = rentRequest.CustomerId;
                    notification.RentRequestId       = rentRequest.Id;
                    db.Notifications.Add(notification);
                    db.SaveChanges();

                    RentRequestHistory rentRequestHistory = new RentRequestHistory();
                    rentRequestHistory.Status          = "New";
                    rentRequestHistory.Text            = "New rent request";
                    rentRequestHistory.HistoryDateTime = DateTime.Now;
                    rentRequestHistory.RentRequestId   = rentRequest.Id;
                    db.RentRequestHistorys.Add(rentRequestHistory);
                    db.SaveChanges();
                }

                return(RedirectToAction("Index"));
            }

            ViewBag.CustomerId    = new SelectList(db.Customers, "Id", "Name", rentRequestViewModel.CustomerId);
            ViewBag.VehicleTypeId = new SelectList(db.VehicleTypes, "Id", "Name", rentRequestViewModel.VehicleTypeId);
            return(View(rentRequestViewModel));
        }
Beispiel #14
0
        // GET: /RentRequest/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RentRequest rentrequest = db.RentRequests.Find(id);

            if (rentrequest == null)
            {
                return(HttpNotFound());
            }

            RentRequestViewModel rentRequestViewModel = Mapper.Map <RentRequestViewModel>(rentrequest);

            ViewBag.CustomerId    = new SelectList(db.Customers, "Id", "Name", rentrequest.CustomerId);
            ViewBag.VehicleTypeId = new SelectList(db.VehicleTypes, "Id", "Name", rentrequest.VehicleTypeId);
            return(View(rentRequestViewModel));
        }
Beispiel #15
0
 // need check
 public RentRequest GetById(string id)
 {
     if (ID.Contains(id))
     {
         var result = _context.Rents.Find(id);
         if (result != null)
         {
             var data = new RentRequest()
             {
                 //End = result.End.Value.,
                 IDcustomer = result.IDcustomer,
                 idMotel    = result.idMotel,
                 IdRent     = result.IdRent,
                 Start      = result.Start
             };
             return(data);
         }
     }
     return(null);
 }
        public async Task <IActionResult> Create([FromBody] RentRequest rentRequest)
        {
            var rent = new Rent
            {
                ProductionInformationId = rentRequest.ProductionInformationId,
                StartDate      = rentRequest.StartDate,
                EndDate        = rentRequest.EndDate,
                InsurancePrice = rentRequest.InsurancePrice,
                RentPrice      = rentRequest.RentPrice
            };

            await _rentsService.CreateAsync(rent);

            var baseurl     = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.ToUriComponent()}";
            var locationuri = baseurl + "/" + ApiRoutes.Rents.Get.Replace("{rentId}", rent.Id.ToString());

            var response = RentToRentResponse(rent);

            return(Created(locationuri, response));
        }
        public ActionResult RentDetails(int rentId)
        {
            var rent = RentRequest.GetRentDetailsById(rentId);

            return(View(rent));
        }
        public ActionResult CompanyRents()
        {
            var rents = RentRequest.GetRentsOfCompany(CurrentUser.User.UserId);

            return(View(rents));
        }