public async Task <IActionResult> UpdateVehicleMasterAsync([FromBody] UpdateVehicleMasterManagementAc updateVehicleMaster)
        {
            var user = await _userManager.FindByNameAsync(User.Identity.Name);

            return(Ok(await _vehicleMasterManagementRepository.UpdateVehicleMasterAsync(updateVehicleMaster, user)));
        }
        /// <summary>
        /// Method to update vehicle master - SS
        /// </summary>
        /// <param name="updateVehicleMaster">vehicle detail</param>
        /// <param name="loggedInUser">logged in user</param>
        /// <returns>response</returns>
        public async Task <VehicleMasterManagementResponse> UpdateVehicleMasterAsync(UpdateVehicleMasterManagementAc updateVehicleMaster,
                                                                                     ApplicationUser loggedInUser)
        {
            if (string.IsNullOrEmpty(updateVehicleMaster.VehicleCode) && string.IsNullOrEmpty(updateVehicleMaster.VehicleCode.Trim()))
            {
                return new VehicleMasterManagementResponse()
                       {
                           HasError = true, Message = "Vehicle code can't be empty", ErrorType = VehicleMasterManagementResponseType.VehicleCode
                       }
            }
            ;
            else if (string.IsNullOrEmpty(updateVehicleMaster.VehicleType) && string.IsNullOrEmpty(updateVehicleMaster.VehicleType.Trim()))
            {
                return new VehicleMasterManagementResponse()
                       {
                           HasError = true, Message = "Vehicle type can't be empty", ErrorType = VehicleMasterManagementResponseType.VehicleType
                       }
            }
            ;
            else if (string.IsNullOrEmpty(updateVehicleMaster.FuelType) && string.IsNullOrEmpty(updateVehicleMaster.FuelType.Trim()))
            {
                return new VehicleMasterManagementResponse()
                       {
                           HasError = true, Message = "Fuel type can't be empty", ErrorType = VehicleMasterManagementResponseType.FuelType
                       }
            }
            ;
            else if (string.IsNullOrEmpty(updateVehicleMaster.VehicleRegistrationNumber) && string.IsNullOrEmpty(updateVehicleMaster.VehicleRegistrationNumber.Trim()))
            {
                return new VehicleMasterManagementResponse()
                       {
                           HasError = true, Message = "Vehicle registration number can't be empty", ErrorType = VehicleMasterManagementResponseType.VehicleRegistrationNumber
                       }
            }
            ;
            else if (string.IsNullOrEmpty(updateVehicleMaster.EngineNumber) && string.IsNullOrEmpty(updateVehicleMaster.EngineNumber.Trim()))
            {
                return new VehicleMasterManagementResponse()
                       {
                           HasError = true, Message = "Engine number can't be empty", ErrorType = VehicleMasterManagementResponseType.EngineNumber
                       }
            }
            ;
            else
            {
                var instituteId = await _instituteUserMappingHelperService.GetUserCurrentSelectedInstituteIdAsync(loggedInUser.Id, true);

                var vehicles = await _iMSDbContext.VehicleMasters.Where(x => x.InstituteId == instituteId && x.Id != updateVehicleMaster.Id).ToListAsync();

                if (vehicles.Any(x => x.VehicleCode.ToLowerInvariant() == updateVehicleMaster.VehicleCode.ToLowerInvariant()))
                {
                    return new VehicleMasterManagementResponse()
                           {
                               HasError = true, Message = "Vehicle code already exist. Please use unique one", ErrorType = VehicleMasterManagementResponseType.VehicleCode
                           }
                }
                ;
                else
                {
                    var vehicle = await _iMSDbContext.VehicleMasters.FirstOrDefaultAsync(x => x.Id == updateVehicleMaster.Id);

                    if (vehicle == null)
                    {
                        return new VehicleMasterManagementResponse()
                               {
                                   HasError = true, Message = "Vehicle not found", ErrorType = VehicleMasterManagementResponseType.Id
                               }
                    }
                    ;
                    else
                    {
                        vehicle.AverageKMPL = updateVehicleMaster.AverageKMPL;

                        vehicle.ChasisNumber              = updateVehicleMaster.ChasisNumber;
                        vehicle.EngineNumber              = updateVehicleMaster.EngineNumber;
                        vehicle.ExtraFittings             = updateVehicleMaster.ExtraFittings;
                        vehicle.FitnessExpDate            = updateVehicleMaster.FitnessExpDate;
                        vehicle.FuelType                  = EnumHelperService.GetValueFromDescription <VehicleMasterFuelTypeEnum>(updateVehicleMaster.FuelType);
                        vehicle.InsuranceDate             = updateVehicleMaster.InsuranceDate;
                        vehicle.InsuranceExpDate          = updateVehicleMaster.InsuranceExpDate;
                        vehicle.InsuranceNumber           = updateVehicleMaster.InsuranceNumber;
                        vehicle.NextMaintenanceDate       = updateVehicleMaster.NextMaintenanceDate;
                        vehicle.PermitValidityDate        = updateVehicleMaster.PermitValidityDate;
                        vehicle.UpdatedById               = loggedInUser.Id;
                        vehicle.UpdatedOn                 = DateTime.UtcNow;
                        vehicle.VehicleCode               = updateVehicleMaster.VehicleCode;
                        vehicle.VehicleRegistrationNumber = updateVehicleMaster.VehicleRegistrationNumber;
                        vehicle.VehicleType               = EnumHelperService.GetValueFromDescription <VehicleMasterTypeEnum>(updateVehicleMaster.VehicleType);
                        _iMSDbContext.VehicleMasters.Update(vehicle);
                        await _iMSDbContext.SaveChangesAsync();

                        return(new VehicleMasterManagementResponse()
                        {
                            HasError = false, Message = "Vehicle updated successfully"
                        });
                    }
                }
            }
        }