Inheritance: mobSocial.WebApi.Models.Abstract.AbstractPageModel
        public IHttpActionResult Get(int id)
        {
            var artist = _artistPageService.Get(id);

            if (artist == null)
                return NotFound();

            var model = new ArtistPageModel() {
                Description = artist.Biography,
                DateOfBirth = artist.DateOfBirth,
                Gender = artist.Gender,
                Name = artist.Name,
                ShortDescription = artist.ShortDescription,
                HomeTown = artist.HomeTown,
                RemoteEntityId = artist.RemoteEntityId,
                RemoteSourceName = artist.RemoteSourceName,
                Id = artist.Id
            };

            //images for artist
            foreach (var picture in artist.GetPictures())
            {
                model.Pictures.Add(new PictureResponseModel {
                    Id = picture.Id,
                    PictureUrl = _pictureService.GetPictureUrl(picture),
                });
            }

            model.CanEdit = CanEdit(artist);
            model.CanDelete = CanDelete(artist);

            return Response(model);
        }
        public IHttpActionResult SaveArtist(ArtistPageModel model)
        {
            if (!ModelState.IsValid)
            {
                VerboseReporter.ReportError("Invalid data submitted. Please check all fields and try again.", "save_artist");
                return RespondFailure();
            }

            if (!ApplicationContext.Current.CurrentUser.IsRegistered())
            {
                VerboseReporter.ReportError("Unauthorized access", "save_artist");
                return RespondFailure();
            }

            //check to see if artist name already exists
            string artistJson;
            if (IsArtistPageNameAvailable(model.Name, out artistJson))
            {
                var artistPage = new ArtistPage() {
                    PageOwnerId = ApplicationContext.Current.CurrentUser.Id,
                    Biography = model.Description,
                    Name = model.Name,
                    DateOfBirth = model.DateOfBirth,
                    Gender = model.Gender,
                    HomeTown = model.HomeTown,
                    RemoteEntityId = model.RemoteEntityId,
                    RemoteSourceName = model.RemoteSourceName,
                    ShortDescription = model.ShortDescription
                };

                _artistPageService.Insert(artistPage);

                if (artistJson != "")
                {
                    //we can now download the image from the server and store it on our own server
                    //use the json we retrieved earlier
                    var jObject = (JObject)JsonConvert.DeserializeObject(artistJson);

                    if (!string.IsNullOrEmpty(jObject["ImageUrl"].ToString()))
                    {
                        var imageUrl = jObject["ImageUrl"].ToString();
                        var imageBytes = HttpHelper.ExecuteGet(imageUrl);
                        var fileExtension = Path.GetExtension(imageUrl);
                        if (!string.IsNullOrEmpty(fileExtension))
                            fileExtension = fileExtension.ToLowerInvariant();

                        var contentType = PictureUtility.GetContentType(fileExtension);
                        var picture = new Media()
                        {
                            Binary = imageBytes,
                            Name = model.Name,
                            MimeType = contentType
                        };
                        _pictureService.WritePictureBytes(picture, _mediaSettings.PictureSaveLocation);
                        //relate both page and picture
                        _pictureService.AttachMediaToEntity(artistPage, picture);
                    }

                }

                return Response(new {
                    Success = true,
                    RedirectTo = Url.Route("ArtistPageUrl", new RouteValueDictionary()
                    {
                        { "SeName" , artistPage.GetPermalink()}
                    })
                });

            }
            else
            {
                return Response(new {
                    Success = false,
                    Message = "DuplicateName"
                });
            }
        }
        public IHttpActionResult Editor(int artistPageId = 0)
        {
            ArtistPageModel model = null;
            if (artistPageId != 0)
            {
                var artist = _artistPageService.Get(artistPageId);
                //can the current user edit this page?
                if (CanEdit(artist))
                {
                    model = new ArtistPageModel() {
                        Description = artist.Biography,
                        DateOfBirth = artist.DateOfBirth,
                        Gender = artist.Gender,
                        Name = artist.Name,
                        ShortDescription = artist.ShortDescription,
                        RemoteEntityId = artist.RemoteEntityId,
                        RemoteSourceName = artist.RemoteSourceName,
                        HomeTown = artist.HomeTown
                    };

                }
                else
                {
                    return NotFound();
                }

            }
            else
            {
                model = new ArtistPageModel();
            }

            return Response(model);
        }