public async Task AddFile(AddFileDto fileDto, int userId, int clientId) { var fileStorageRepository = DataContextManager.CreateRepository <IFileStorageRepository>(); var parentFileStorage = await fileStorageRepository.GetById(fileDto.ParentId, userId, clientId); if (parentFileStorage == null || !parentFileStorage.IsDirectory) { throw new NotFoundException("File storage", fileDto.ParentId); } var fileName = Path.GetFileNameWithoutExtension(fileDto.Name); var fileExtension = Path.GetExtension(fileDto.Name); var childFileStorages = await fileStorageRepository.GetByParentId(parentFileStorage.Id, userId, clientId); if (childFileStorages.Any(x => !x.IsDirectory && x.Name.Equals(fileName) && x.Files.Any(y => y.IsActive && y.Extension.Equals(fileExtension)))) { throw new FoundSameObjectException("File storage", fileName); } var owners = await _permissionHelper.GetOwners(parentFileStorage, userId, clientId); var sizeInfo = fileDto.Size.ToPrettySize(); var blobName = Guid.NewGuid(); var newFileStorage = new FileStorage { Name = fileName, ParentFileStorageId = parentFileStorage.Id, IsDirectory = false, CreateDate = DateTime.UtcNow, CreateById = userId, ClientId = owners.ClientId, OwnerId = owners.OwnerId, IsActive = true, Files = new List <Models.File> { new Models.File { Extension = fileExtension, Size = sizeInfo.Size, SizeType = sizeInfo.SizeType, IsActive = true, CreateById = userId, CreateDate = DateTime.UtcNow, AzureBlobStorage = new AzureBlobStorage { BlobName = blobName } } } }; await _azureBlobClient.UploadFile(_blobSettings.ContainerName, blobName.ToString(), fileDto.Content.ToByteArray()); await fileStorageRepository.Add(newFileStorage); }