private Image Create(int serviceSupplierId, Models.Requests.AccommodationImage image) => new Image
 {
     ReferenceId          = image.AccommodationId,
     ImageType            = ImageTypes.AccommodationImage,
     OriginalImageDetails = new OriginalImageDetails
     {
         OriginalName        = image.UploadedFile.FileName,
         OriginalContentType = image.UploadedFile.ContentType
     },
     ServiceSupplierId = serviceSupplierId,
     Created           = _dateTimeProvider.UtcNow(),
     Description       = JsonDocumentUtilities.CreateJDocument(new MultiLanguage <string> {
         Ar = string.Empty, En = string.Empty, Ru = string.Empty
     })
 };
        public Task <Result <Guid> > Add(Models.Requests.AccommodationImage image)
        {
            return(_managerContext.GetServiceSupplier()
                   .Check(serviceSupplier => _serviceSupplierContext.EnsureAccommodationBelongsToServiceSupplier(serviceSupplier, image.AccommodationId))
                   .Bind(serviceSupplier => Validate(image, serviceSupplier))
                   .Tap(serviceSupplier => ResortImages(serviceSupplier.Id, image.AccommodationId, ImageTypes.AccommodationImage))
                   .Map(serviceSupplier => Create(serviceSupplier.Id, image))
                   .Ensure(dbImage => ValidateImageType(image.UploadedFile).Value, "Invalid image file type")
                   .Bind(dbImage => ConvertAndUpload(dbImage, image.UploadedFile))
                   .Bind(AddSlimImageToAccommodation));

            Result <ServiceSupplier> Validate(Models.Requests.AccommodationImage image, ServiceSupplier serviceSupplier)
            {
                var validationResult = ValidationHelper.Validate(image, new AccommodationImageValidator());

                return(validationResult.IsFailure
                    ? Result.Failure <ServiceSupplier>(validationResult.Error)
                    : Result.Success(serviceSupplier));
            }
        }
 public async Task <Result <Guid> > Add(Models.Requests.AccommodationImage image)
 {
     throw new NotImplementedException();
 }