public async Task <IActionResult> AddOrUpdateVehicleDriverMappingAsync([FromBody] AddOrUpdateVehicleDriverMappingAc vehicleDriverMapping) { var user = await _userManager.FindByNameAsync(User.Identity.Name); return(Ok(await _vehicleDriverMappingRepository.AddOrUpdateVehicleDriverMappingAsync(vehicleDriverMapping, user))); }
/// <summary> /// Method to add and update vehicle driver mapping - SS /// </summary> /// <param name="vehicleDriverMapping">vehicle driver detail</param> /// <param name="loggedInUser">logged in user</param> /// <returns>response</returns> public async Task <VehicleDriverMappingResponse> AddOrUpdateVehicleDriverMappingAsync(AddOrUpdateVehicleDriverMappingAc vehicleDriverMapping, ApplicationUser loggedInUser) { var instituteId = await _instituteUserMappingHelperService.GetUserCurrentSelectedInstituteIdAsync(loggedInUser.Id, true); if (!await _iMSDbContext.VehicleMasters.AnyAsync(x => x.InstituteId == instituteId && x.Id == vehicleDriverMapping.VehicleId)) { return new VehicleDriverMappingResponse() { HasError = true, Message = "Vehicle not found", ErrorType = VehicleDriverMappingResponseType.VehicleId } } ; else { var driverIds = vehicleDriverMapping.Drivers.Select(x => x.DriverId).Distinct().ToList(); var studentCount = await _iMSDbContext.DriverMasters.CountAsync(x => x.InstituteId == instituteId && driverIds.Contains(x.Id)); if (driverIds.Count != studentCount) { return new VehicleDriverMappingResponse() { HasError = true, Message = "Driver not found", ErrorType = VehicleDriverMappingResponseType.DriverId } } ; else { var previous = await _iMSDbContext.VehicleDriverMappings.Where(x => x.VehicleId == vehicleDriverMapping.VehicleId).ToListAsync(); _iMSDbContext.VehicleDriverMappings.RemoveRange(previous); await _iMSDbContext.SaveChangesAsync(); List <DomainModel.Models.VehicleDriverMapping> vehicleDriverMappings = new List <DomainModel.Models.VehicleDriverMapping>(); foreach (var driver in vehicleDriverMapping.Drivers) { vehicleDriverMappings.Add(new DomainModel.Models.VehicleDriverMapping() { CreatedOn = DateTime.UtcNow, DriverId = driver.DriverId, IsPrimary = driver.IsPrimary, VehicleId = vehicleDriverMapping.VehicleId, UpdatedById = loggedInUser.Id }); } _iMSDbContext.VehicleDriverMappings.AddRange(vehicleDriverMappings); await _iMSDbContext.SaveChangesAsync(); return(new VehicleDriverMappingResponse() { HasError = false, Message = "Vehicle driver detail updated successfully" }); } } }