/// <summary> /// /// </summary> /// <remarks>Add a History record to the RentalRequest</remarks> /// <param name="id">id of RentalRequest to add History for</param> /// <param name="item"></param> /// <response code="200">OK</response> /// <response code="201">History created</response> public virtual IActionResult RentalrequestsIdHistoryPostAsync(int id, History item) { HistoryViewModel result = new HistoryViewModel(); bool exists = _context.RentalRequests.Any(a => a.Id == id); if (exists) { RentalRequest rentalRequest = _context.RentalRequests .Include(x => x.History) .First(a => a.Id == id); if (rentalRequest.History == null) { rentalRequest.History = new List <History>(); } // force add item.Id = 0; rentalRequest.History.Add(item); _context.RentalRequests.Update(rentalRequest); _context.SaveChanges(); } result.HistoryText = item.HistoryText; result.Id = item.Id; result.LastUpdateTimestamp = item.LastUpdateTimestamp; result.LastUpdateUserid = item.LastUpdateUserid; result.AffectedEntityId = id; return(new ObjectResult(result)); }
/// <summary> /// Rental request search results view model /// </summary> /// <param name="model"></param> /// <returns></returns> public static RentalRequestSearchResultViewModel ToViewModel(this RentalRequest model) { var dto = new RentalRequestSearchResultViewModel(); if (model != null) { if (model.DistrictEquipmentType != null) { dto.EquipmentTypeName = model.DistrictEquipmentType.EquipmentType.Name; } dto.Id = model.Id; dto.LocalArea = model.LocalArea; if (model.Project != null) { dto.PrimaryContact = model.Project.PrimaryContact; dto.ProjectName = model.Project.Name; dto.ProjectId = model.Project.Id; } dto.Status = model.Status; dto.EquipmentCount = model.EquipmentCount; dto.ExpectedEndDate = model.ExpectedEndDate; dto.ExpectedStartDate = model.ExpectedStartDate; } return(dto); }
/// <summary> /// /// </summary> /// <param name="item"></param> /// <response code="201">Project created</response> public virtual IActionResult RentalrequestsPostAsync(RentalRequest item) { if (item != null) { AdjustRecord(item); var exists = _context.RentalRequests.Any(a => a.Id == item.Id); if (exists) { _context.RentalRequests.Update(item); } else { // record not found BuildRentalRequestRotationList(item); _context.RentalRequests.Add(item); } // Save the changes _context.SaveChanges(); return(new ObjectResult(item)); } else { return(new StatusCodeResult(400)); } }
/// <summary> /// /// </summary> /// <remarks>Returns History for a particular RentalRequest</remarks> /// <param name="id">id of RentalRequest to fetch History for</param> /// <param name="offset"></param> /// <param name="limit"></param> /// <response code="200">OK</response> public virtual IActionResult RentalrequestsIdHistoryGetAsync(int id, int?offset, int?limit) { bool exists = _context.RentalRequests.Any(a => a.Id == id); if (exists) { RentalRequest rentalRequest = _context.RentalRequests .Include(x => x.History) .First(a => a.Id == id); List <History> data = rentalRequest.History.OrderByDescending(y => y.LastUpdateTimestamp).ToList(); if (offset == null) { offset = 0; } if (limit == null) { limit = data.Count - offset; } List <HistoryViewModel> result = new List <HistoryViewModel>(); for (int i = (int)offset; i < data.Count && i < offset + limit; i++) { result.Add(data[i].ToViewModel(id)); } return(new ObjectResult(result)); } else { // record not found return(new StatusCodeResult(404)); } }
/// <summary> /// Basic file receiver for .NET Core /// </summary> /// <param name="id">Schoolbus Id</param> /// <param name="files">Files to add to attachments</param> /// <returns></returns> public IActionResult RentalRequestIdAttachmentsPostAsync(int id, IList <IFormFile> files) { // validate the bus id bool exists = _context.Equipments.Any(a => a.Id == id); if (exists) { RentalRequest rentalRequest = _context.RentalRequests .Include(x => x.Attachments) .First(a => a.Id == id); AddFilesToAttachments(rentalRequest.Attachments, files); _context.RentalRequests.Update(rentalRequest); _context.SaveChanges(); List <AttachmentViewModel> result = MappingExtensions.GetAttachmentListAsViewModel(rentalRequest.Attachments); return(new ObjectResult(result)); } else { // record not found return(new StatusCodeResult(404)); } }
public ActionResult Create([Bind(Include = "RentalRequestId,ContactPerson,ContactPhoneNumber,ContactEmail,Company,StartTime,EndTime,ProjectInfo,Requests,RentalCode,Accepted,ContractSigned")] RentalRequest rentalRequest) { long sec = 10000000; //DateTime ticks per second long hrSecs = 3600; //Seconds in an hour long Strtm = Convert.ToInt64(rentalRequest.StartTime.Ticks) / sec; //divided ticks into seconds long Endtm = Convert.ToInt64(rentalRequest.EndTime.Ticks) / sec; if (Endtm < (Strtm + hrSecs) && Endtm >= Strtm) //Doesn't allow rentals < 1hr { ModelState.AddModelError("EndTime", "** Rental must be at least 1 hour. **"); } if (Endtm < Strtm) //Keeps End time after start time { ModelState.AddModelError("StartTime", "** Start Time cannot occur after End Time. **"); } if (ModelState.IsValid) { db.RentalRequests.Add(rentalRequest); var randomNum = new Random(); int codeNum = randomNum.Next(10000, 99999); rentalRequest.RentalCode = codeNum; db.SaveChanges(); if (rentalRequest.Accepted == true) { RentalAddCalendar(rentalRequest); } return(RedirectToAction("Index")); } return(View(rentalRequest)); }
public RentalRequestDto Find(int id) { RentalRequest rentalRequest = _repository.Find(id); RentalRequestDto rentalRequestDto = _mapper.Map <RentalRequestDto>(rentalRequest); return(rentalRequestDto); }
/// <summary> /// Delete rental request /// </summary> /// <param name="id">id of Project to delete</param> /// <response code="200">OK</response> /// <response code="404">Project not found</response> public virtual IActionResult RentalrequestsIdDeletePostAsync(int id) { RentalRequest item = _context.RentalRequests .Include(x => x.RentalRequestRotationList) .FirstOrDefault(a => a.Id == id); if (item != null) { // remove the rotation list if it exists if (item.RentalRequestRotationList != null) { foreach (RentalRequestRotationList rentalRequestRotationList in item.RentalRequestRotationList) { _context.RentalRequestRotationLists.Remove(rentalRequestRotationList); } } _context.RentalRequests.Remove(item); // save the changes _context.SaveChanges(); return(new ObjectResult(new HetsResponse(item))); } // record not found return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); }
/// <summary> /// Printed rental agreement view model /// </summary> /// <param name="model"></param> /// <returns></returns> public static RentalRequestViewModel ToRentalRequestViewModel(this RentalRequest model) { var dto = new RentalRequestViewModel(); if (model != null) { dto.Id = model.Id; dto.Project = model.Project; dto.LocalArea = model.LocalArea; dto.Status = model.Status; dto.DistrictEquipmentType = model.DistrictEquipmentType; dto.EquipmentCount = model.EquipmentCount; dto.ExpectedHours = model.ExpectedHours; dto.ExpectedStartDate = model.ExpectedStartDate; dto.ExpectedEndDate = model.ExpectedEndDate; dto.FirstOnRotationList = model.FirstOnRotationList; dto.Notes = model.Notes; dto.Attachments = model.Attachments; dto.History = model.History; dto.RentalRequestAttachments = model.RentalRequestAttachments; dto.RentalRequestRotationList = model.RentalRequestRotationList; // calculate the Yes Count based on the RentalRequestList dto.CalculateYesCount(); } return(dto); }
public ActionResult DeleteConfirmed(int id) { RentalRequest rentalRequest = db.RentalRequests.Find(id); db.RentalRequests.Remove(rentalRequest); db.SaveChanges(); return(RedirectToAction("Index")); }
public RentalRequestDto Update(RentalRequestDto rentalRequestDto) { RentalRequest rentalRequest = _mapper.Map <RentalRequest>(rentalRequestDto); _repository.Update(rentalRequest); _dal.Save(); return(_mapper.Map <RentalRequestDto>(rentalRequest)); }
public void RentalDeleteCalendar(RentalRequest rentalRequest) { CalendarEvent calendar = db.CalendarEvent.Where(x => x.RentalRequestId == rentalRequest.RentalRequestId).FirstOrDefault(); if (calendar != null) { db.CalendarEvent.Remove(calendar); db.SaveChanges(); } }
public RentalRequest Remove(int id) { RentalRequest request = _context.RentalRequests.Find(id); if (request != null) { request = _context.RentalRequests.Remove(request); } return(request); }
public ActionResult Edit([Bind(Include = "RentalRequestID,ContactPerson,MyProperty,RequestedTime,StartTime,EndTime,ProjectInfo,RentalCode,Accepted,ContractSigned")] RentalRequest rentalRequest) { if (ModelState.IsValid) { db.Entry(rentalRequest).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(rentalRequest)); }
public RentalResponse Rent(RentalRequest request) { var pricing = pricingFactory.GetPolicyFor(request.CarType); return(new RentalResponse { Days = request.Days, EstimatedTotalKmPrice = request.Kilometers * pricing.GetKmPrice(), TotalDailyPrice = request.Days * pricing.GetDailyRentPrice(), AdditionalItemsPrice = GetAdditionalItemsPrice(request.OptionalItems, pricing) }); }
public void RentalAddCalendar(RentalRequest rentalRequest) { CalendarEvent calendar = new CalendarEvent(); calendar.RentalRequestId = rentalRequest.RentalRequestId; calendar.Title = rentalRequest.Company; calendar.StartDate = rentalRequest.StartTime; calendar.EndDate = rentalRequest.EndTime; db.CalendarEvent.Add(calendar); db.SaveChanges(); }
public ItemRenting RequestRent(RentalRequest request) { if (null == request) { throw new ArgumentNullException("request"); } var userId = User.Identifier(); return(this.rentCore.Request(request, userId)); }
public ActionResult Create([Bind(Include = "RentalRequestID,ContactPerson,Company,RequestedTime,StartTime,EndTime,ProjectInfo,RentalCode,Accepted,ContractSigned")] RentalRequest rentalRequest) { if (ModelState.IsValid) { db.RentalRequests.Add(rentalRequest); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(rentalRequest)); }
public override async Task HandleAsync(RequestRentalForPeriodCommand command) { RentalRequest rentalRequest = RentalRequest.RequestRental( command.CustomerId, command.Period, command.PricePerNight, command.RentalRequestedAt ); await this.rentalRepository.Save(rentalRequest); }
public ActionResult DeleteConfirmed(int id) { RentalRequest rentalRequest = db.RentalRequests.Find(id); if (rentalRequest.Accepted == true) { RentalDeleteCalendar(rentalRequest); } db.RentalRequests.Remove(rentalRequest); db.SaveChanges(); return(RedirectToAction("Index")); }
/// <summary> /// Create rental request /// </summary> /// <param name="item"></param> /// <response>Rental Request</response> /// <response code="200">Rental Request created</response> /// <response code="405">In Progress Rental Request already exists</response> public virtual IActionResult RentalrequestsPostAsync(RentalRequest item) { if (item != null) { AdjustRecord(item); bool exists = _context.RentalRequests.Any(a => a.Id == item.Id); if (exists) { _context.RentalRequests.Update(item); } else { // check if we have an existing rental request for the same // local area and equipment type - if so - throw an error // Per discussion with the business (19 Jan 2018): // * Don't create a record as New if another Request exists // * Simply give the user an error and not allow the new request // // Note: leaving the "New" code in place in case this changes in the future List <RentalRequest> requests = _context.RentalRequests .Where(x => x.DistrictEquipmentType == item.DistrictEquipmentType && x.LocalArea.Id == item.LocalArea.Id && x.Status.Equals("In Progress", StringComparison.CurrentCultureIgnoreCase)) .ToList(); if (requests.Count > 0) { // In Progress Rental Request already exists return(new StatusCodeResult(405)); } // record not found BuildRentalRequestRotationList(item); // check if we have an existing "In Progress" request // for the same Loac Area and Equipment Type SetRentalRequestStatusOnCreate(item); _context.RentalRequests.Add(item); } // save the changes _context.SaveChanges(); return(new ObjectResult(new HetsResponse(item))); } // no record to insert return(new ObjectResult(new HetsResponse("HETS-04", ErrorViewModel.GetDescription("HETS-04", _configuration)))); }
public RentalRequestDto Create(RentalRequestDto rentalRequestDto) { RentalRequest rentalRequest = _mapper.Map <RentalRequest>(rentalRequestDto); User user = _userManager.FindById(rentalRequestDto.UserId); rentalRequest.User = user; _repository.Create(rentalRequest); _dal.Save(); return(_mapper.Map <RentalRequestDto>(rentalRequest)); }
public async Task Save(RentalRequest request) { await this.store.RentalRequests.InsertOneAsync(new RentalRequestEntity { Id = request.Id.Value.ToString(), CustomerId = request.CustomerId.Value.ToString(), PeriodStart = request.Period.Start, PeriodEnd = request.Period.End, Currency = request.PricePerNight.Currency, PricePerNight = request.PricePerNight.Value, RequestedAt = request.RequestedAt }); }
// GET: RentalRequest/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } RentalRequest rentalRequest = db.RentalRequests.Find(id); if (rentalRequest == null) { return(HttpNotFound()); } return(View(rentalRequest)); }
private DetailResponse RentByHour(RentalRequest request) { var start = DateTime.Now; var response = new DetailResponse() { Customer = request.Customer, Quantity = request.Quantity, RentalCost = request.Quantity * 5, RentalOption = RentalDescriptionConstant.HOUR, RentalStart = start, RentalEnd = start.AddHours(request.Quantity) }; return(response); }
private DetailResponse RentByWeek(RentalRequest request) { var start = DateTime.Now; var response = new DetailResponse() { Customer = request.Customer, Quantity = request.Quantity, RentalCost = request.Quantity * 60, RentalOption = RentalDescriptionConstant.WEEK, RentalStart = start, RentalEnd = start.AddDays(request.Quantity * 7) }; return(response); }
/// <summary> /// Basic file receiver for .NET Core /// </summary> /// <param name="id">Schoolbus Id</param> /// <param name="files">Files to add to attachments</param> /// <returns></returns> public IActionResult RentalRequestIdAttachmentsPostAsync(int id, IList <IFormFile> files) { // validate the bus id bool exists = _context.RentalRequests.Any(a => a.Id == id); if (exists) { RentalRequest rentalRequest = _context.RentalRequests .Include(x => x.Attachments) .First(a => a.Id == id); foreach (var file in files) { if (file.Length > 0) { Attachment attachment = new Attachment(); // strip out extra info in the file name if (!string.IsNullOrEmpty(file.FileName)) { attachment.FileName = Path.GetFileName(file.FileName); } // allocate storage for the file and create a memory stream attachment.FileContents = new byte[file.Length]; using (MemoryStream fileStream = new MemoryStream(attachment.FileContents)) { file.CopyTo(fileStream); } attachment.Type = GetType(attachment.FileName); attachment.MimeType = GetMimeType(attachment.Type); rentalRequest.Attachments.Add(attachment); } } _context.SaveChanges(); List <AttachmentViewModel> result = MappingExtensions.GetAttachmentListAsViewModel(rentalRequest.Attachments); return(new ObjectResult(result)); } // record not found return(new StatusCodeResult(404)); }
/// <summary> /// Create rental request rotation list /// </summary> /// <param name="rentalRequestId"></param> public virtual IActionResult RentalRequestsRotationListRecalcGetAsync(int rentalRequestId) { bool exists = _context.RentalRequests.Any(a => a.Id == rentalRequestId); if (exists) { // get rental request RentalRequest result = _context.RentalRequests .Include(x => x.DistrictEquipmentType) .Include(x => x.DistrictEquipmentType.EquipmentType) .Include(x => x.LocalArea) .Include(x => x.LocalArea.ServiceArea.District.Region) .Include(x => x.RentalRequestRotationList) .First(a => a.Id == rentalRequestId); if (result.Status.Equals("In Progress", StringComparison.InvariantCultureIgnoreCase)) { // delete any existing rotation list records foreach (RentalRequestRotationList rentalRequestRotationList in result.RentalRequestRotationList) { _context.RentalRequestRotationLists.Remove(rentalRequestRotationList); } // update _context.SaveChanges(); // generate rotation list BuildRentalRequestRotationList(result); // save the changes _context.SaveChanges(); // repopulate the results with latest data result = _context.RentalRequests .Include(x => x.DistrictEquipmentType) .Include(x => x.DistrictEquipmentType.EquipmentType) .Include(x => x.LocalArea) .Include(x => x.LocalArea.ServiceArea.District.Region) .Include(x => x.RentalRequestRotationList) .First(a => a.Id == rentalRequestId); } return(new ObjectResult(new HetsResponse(result.ToRentalRequestViewModel()))); } // record not found return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); }
public void RentalEditCalendar(RentalRequest rentalRequest) { CalendarEvent calendar = db.CalendarEvent.Where(x => x.RentalRequestId == rentalRequest.RentalRequestId).FirstOrDefault(); if (calendar == null) { RentalAddCalendar(rentalRequest); } else if (rentalRequest.RentalRequestId == calendar.RentalRequestId) { calendar.Title = rentalRequest.Company; calendar.StartDate = rentalRequest.StartTime; calendar.EndDate = rentalRequest.EndTime; db.Entry(calendar).State = EntityState.Modified; db.SaveChanges(); } }
public ActionResult Edit([Bind(Include = "RentalRequestId,ContactPerson,ContactPhoneNumber,ContactEmail,Company,StartTime,EndTime,ProjectInfo,Requests,Accepted,ContractSigned")] RentalRequest rentalRequest) { long sec = 10000000; //DateTime ticks per second long hrSecs = 3600; //Seconds in an hour long Strtm = Convert.ToInt64(rentalRequest.StartTime.Ticks) / sec; //divided ticks into seconds long Endtm = Convert.ToInt64(rentalRequest.EndTime.Ticks) / sec; if (Endtm < (Strtm + hrSecs) && Endtm >= Strtm) //Doesn't allow rentals < 1hr { ModelState.AddModelError("EndTime", "** Rental must be at least 1 hour. **"); } if (Endtm < Strtm) //Keeps End time after start time { ModelState.AddModelError("StartTime", "** Start Time cannot occur after End Time. **"); } if (ModelState.IsValid) { var currentRentalRequest = db.RentalRequests.Find(rentalRequest.RentalRequestId); currentRentalRequest.ContactPerson = rentalRequest.ContactPerson; currentRentalRequest.ContactPhoneNumber = rentalRequest.ContactPhoneNumber; currentRentalRequest.ContactEmail = rentalRequest.ContactEmail; currentRentalRequest.Company = rentalRequest.Company; currentRentalRequest.StartTime = rentalRequest.StartTime; currentRentalRequest.EndTime = rentalRequest.EndTime; currentRentalRequest.ProjectInfo = rentalRequest.ProjectInfo; currentRentalRequest.Requests = rentalRequest.Requests; currentRentalRequest.Accepted = rentalRequest.Accepted; currentRentalRequest.ContractSigned = rentalRequest.ContractSigned; db.Entry(currentRentalRequest).State = EntityState.Modified; db.SaveChanges(); if (rentalRequest.Accepted == true) { RentalEditCalendar(rentalRequest); } else if (rentalRequest.Accepted == false) { RentalDeleteCalendar(rentalRequest); } return(RedirectToAction("Index")); } return(View(rentalRequest)); }