Esempio n. 1
0
        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());
        }
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
 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
     });
 }