示例#1
0
        public static void UpdateAlbum(AlbumViewModel album)
        {
            if (album.HasErrors)
            {
                throw new ArgumentException("Album contains invalid data");
            }

            var existing = _albums.SingleOrDefault(a => a == album);

            if (existing != null && existing.Model.Id != album.Model.Id)
            {
                // Revert to previous values
                SetViewModelFromModel(album);
                throw new DuplicateObjectException();
            }

            if (!(album.IsMain ?? false) && MainAlbum == null)
            {
                // Undo IsMain change
                album.IsMain = true;
                throw new RequiredConstraintViolationException(
                          "You have to set another album as 'Main' before unsetting 'Main'");
            }

            if ((album.IsMain ?? false) && _albums.Where(a => a.IsMain ?? false).Count() > 1)
            {
                UnsetPreviousMainAlbum(album);
            }

            SetModelFromViewModel(album);
            AlbumsManager.UpdateAlbum(album.Model);
        }