1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- using System;
- using System.Collections.Generic;
- using System.Threading.Tasks;
- using GxPress.Auth;
- using GxPress.Entity.WorkCar;
- using GxPress.Repository.Interface.WorkCar;
- using GxPress.Request.App.WorkCar;
- using GxPress.Result;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Mvc;
- namespace GxPress.Api.AppControllers
- {
- /// <summary>
- /// 车辆
- /// </summary>
- [Route("api/app/car")]
- [ApiController]
- [Authorize]
- public class AppCarController : ControllerBase
- {
- private readonly ILoginContext _loginContext;
- private readonly ICarTypeRepository _carTypeRepository;
- private readonly ICarOrderRepository _carOrderRepository;
- private readonly ICarRepository _carRepository;
- public AppCarController(ILoginContext loginContext, ICarTypeRepository carTypeRepository, ICarOrderRepository carOrderRepository, ICarRepository carRepository)
- {
- _loginContext = loginContext;
- _carTypeRepository = carTypeRepository;
- _carOrderRepository = carOrderRepository;
- _carRepository = carRepository;
- }
- /// <summary>
- /// 获取车辆类型列表
- /// </summary>
- /// <returns></returns>
- [HttpGet("type")]
- public async Task<IEnumerable<CarType>> TypeList()
- {
- return await _carTypeRepository.GetListAsync();
- }
- /// <summary>
- /// 预定车辆
- /// </summary>
- /// <returns></returns>
- [HttpPost("actions/order")]
- public async Task<DefaultResult> Order([FromBody] CarRequest request)
- {
- var orderedCarIds =
- await _carOrderRepository.GetOrderedCarIds(request.TypeId, request.StartDate, request.EndDate);
- var carId = await _carRepository.GetAvailableCarId(request.TypeId, orderedCarIds);
- if (carId == 0)
- {
- throw new Exception("本时段车辆已预订,请更换预订时间或车辆类型");
- }
- var order = new CarOrder
- {
- UserId = _loginContext.AccountId,
- CarId = carId,
- Reasons = request.Reasons,
- Destination = request.Destination,
- TypeId = request.TypeId,
- StartDate = request.StartDate,
- EndDate = request.EndDate,
- Hour = request.Hour
- };
- await _carOrderRepository.InsertAsync(order);
- return new DefaultResult
- {
- Value = true
- };
- }
- }
- }
|