public async Task <IActionResult> AssignCarToUserAsync([FromBody] InUpdateCarAssignmentsDTO carAssignmentsDTO) { var user = await _manager.UserRepository.GetAsync(carAssignmentsDTO.UserId, true, false); var carExist = await _manager.CarRepository.ExistAsync(carAssignmentsDTO.CarId); if (user == null || !carExist) { return(NotFound()); } if (!user.Cars.Any(uc => uc.CarId == carAssignmentsDTO.CarId && uc.UserId == carAssignmentsDTO.UserId)) { user.Cars.Add(carAssignmentsDTO); } else { user.Cars.First(uc => uc.CarId == carAssignmentsDTO.CarId && uc.UserId == carAssignmentsDTO.UserId).Activate(carAssignmentsDTO); } _manager.UserRepository.Update(user); var assignments = await _manager.CarRepository .GetCarUsersAsync(carAssignmentsDTO.CarId, carAssignmentsDTO.UserId, true, false); assignments.ToList().ForEach(a => a.Unassign()); await _manager.SaveAsync(); return(Ok()); }
public static void Activate(this UserCar car, InUpdateCarAssignmentsDTO carAssignmentsDTO) { car.Mileage = carAssignmentsDTO.Mileage; car.StartOfAssignment = DateTimeOffset .FromUnixTimeSeconds(carAssignmentsDTO.DateOfAssignment).UtcDateTime; car.Active = true; car.Deleted = false; car.EndOfAssignment = null; }
public static void Add(this ICollection <UserCar> cars, InUpdateCarAssignmentsDTO carAssignmentsDTO) { cars.Add(new UserCar() { CarId = carAssignmentsDTO.CarId, Mileage = carAssignmentsDTO.Mileage, StartOfAssignment = DateTimeOffset .FromUnixTimeSeconds(carAssignmentsDTO.DateOfAssignment).UtcDateTime, Active = true }); }