public async Task <IActionResult> UpdateVehicleAccidentAsync([FromBody] UpdateVehicleAccidentManagementAc updateVehicleAccident) { var user = await _userManager.FindByNameAsync(User.Identity.Name); return(Ok(await _vehicleAccidentManagementRepository.UpdateVehicleAccidentAsync(updateVehicleAccident, user))); }
/// <summary> /// Method to update vehicle accident - SS /// </summary> /// <param name="addVehicleAccident">vehicle accident</param> /// <param name="loggedInUser">logged in user</param> /// <returns>response</returns> public async Task <VehicleAccidentManagementResponse> UpdateVehicleAccidentAsync(UpdateVehicleAccidentManagementAc updateVehicleAccident, ApplicationUser loggedInUser) { if (string.IsNullOrEmpty(updateVehicleAccident.Code.Trim())) { return new VehicleAccidentManagementResponse() { HasError = true, Message = "Code can't be empty", ErrorType = VehicleAccidentManagementResponseType.Code } } ; else { var instituteId = await _instituteUserMappingHelperService.GetUserCurrentSelectedInstituteIdAsync(loggedInUser.Id, true); if (!await _iMSDbContext.VehicleMasters.AnyAsync(x => x.Id == updateVehicleAccident.VehicleId && x.InstituteId == instituteId)) { return new VehicleAccidentManagementResponse() { HasError = true, Message = "Vehicle not found", ErrorType = VehicleAccidentManagementResponseType.VehicleId } } ; else { if (!await _iMSDbContext.DriverMasters.AnyAsync(x => x.Id == updateVehicleAccident.DriverId && x.InstituteId == instituteId)) { return new VehicleAccidentManagementResponse() { HasError = true, Message = "Driver not found", ErrorType = VehicleAccidentManagementResponseType.DriverId } } ; else { var accidents = await _iMSDbContext.VehicleAccidents.Where(x => x.Vehicle.InstituteId == instituteId && x.Id != updateVehicleAccident.Id).ToListAsync(); if (accidents.Any(x => x.Code.ToLowerInvariant() == updateVehicleAccident.Code.ToLowerInvariant())) { return new VehicleAccidentManagementResponse() { HasError = true, Message = "Vehicle accident code already exist. Please use unique one", ErrorType = VehicleAccidentManagementResponseType.Code } } ; else { var accident = await _iMSDbContext.VehicleAccidents.FirstOrDefaultAsync(x => x.Id == updateVehicleAccident.Id && x.Vehicle.InstituteId == instituteId); if (accident == null) { return new VehicleAccidentManagementResponse() { HasError = true, Message = "Vehicle accident not found", ErrorType = VehicleAccidentManagementResponseType.Id } } ; else { accident.AccidentDate = updateVehicleAccident.AccidentDate; accident.Address = updateVehicleAccident.Address; accident.Code = updateVehicleAccident.Code; accident.DriverId = updateVehicleAccident.DriverId; accident.EstimateCost = updateVehicleAccident.EstimateCost; accident.UpdatedById = loggedInUser.Id; accident.UpdatedOn = DateTime.UtcNow; accident.VehicleId = updateVehicleAccident.VehicleId; _iMSDbContext.VehicleAccidents.Update(accident); await _iMSDbContext.SaveChangesAsync(); return(new VehicleAccidentManagementResponse() { HasError = false, Message = "Vehicle accident updated successfully" }); } } } } } }