public PermissionType GetFilePermission(Guid fileId, Guid userId)
        {
            FilePermissionModel fpm = _unitOfWork.FilePermissionRepository
                                      .Find(p => p.User.Id == userId && p.File.Id == fileId)
                                      .FirstOrDefault();

            return(fpm == null ? PermissionType.None : fpm.Value);
        }
        public void SetFilePermission(Guid fileId, Guid ownerId, Guid userId, PermissionType permission)
        {
            FileModel fileModel = _unitOfWork.FileRepository.Get(fileId);

            if (fileModel == null)
            {
                throw new Exception();
            }

            if (fileModel.OwnerId != ownerId)
            {
                throw new Exception();
            }

            UserModel userModel = _unitOfWork.UserRepository.Get(userId);

            if (userModel == null)
            {
                throw new Exception();
            }

            if (fileModel.OwnerId == userId)
            {
                throw new Exception();
            }

            FilePermissionModel fpm = _unitOfWork.FilePermissionRepository
                                      .Find(p => p.UserId == userId && p.FileId == fileId)
                                      .FirstOrDefault();

            //Create
            if (permission != PermissionType.None && fpm == null)
            {
                fpm = new FilePermissionModel()
                {
                    User  = userModel,
                    File  = fileModel,
                    Value = permission
                };
                _unitOfWork.FilePermissionRepository.Create(fpm);
            }
            //Update
            else if (permission != PermissionType.None && fpm != null)
            {
                fpm.Value = permission;
                _unitOfWork.FilePermissionRepository.Update(fpm);
            }
            //Delete
            else if (permission == PermissionType.None && fpm != null)
            {
                _unitOfWork.FilePermissionRepository.Delete(fpm.Id);
            }
            _unitOfWork.Save();
        }