Ejemplo n.º 1
0
        private void GrantAccessToFoldersToUser(GrantAccessToUserDTO grantAccessToUserDTO, ErrorSink <DuplicateGrantingError> errors)
        {
            var destUser = db.Users.FirstOrDefault(u => u.Email == grantAccessToUserDTO.User);

            if (destUser == null)
            {
                throw new GrantAccessToFolderException("Something went wrong when granting access.");
            }

            foreach (var folderId in grantAccessToUserDTO.Folders)
            {
                var folder = grantAccessToUserDTO.CurrUser.PhotographerFolders.SingleOrDefault(f => f.PhotographerFolderId == folderId);
                if (folder == null)
                {
                    throw new GrantAccessToFolderException("Something went wrong when granting access.");
                }

                if (destUser.GrantedFolders.Contains(folder))
                {
                    errors.AddNewError(new DuplicateGrantingError(destUser, folder));
                }
                else
                {
                    destUser.GrantedFolders.Add(folder);
                }
            }

            db.SaveChanges();
        }