public HttpResponseMessage Create(PerformerView view)
        {
            if (this._context.performers.Any(p => p.emailAddress == view.emailAddress))
            {
                return Request.CreateErrorResponse(HttpStatusCode.Conflict, "Email already in use");
            }
            else if (ModelState.IsValid)
            {
                try
                {
                    if (!String.IsNullOrWhiteSpace(view.newPassword))
                    {
                        view.password = Crypter.Blowfish.Crypt(view.password);
                    }

                    var original = view.convert(this._context);
                    original.created = DateTime.UtcNow;
                    this._context.performers.Add(original);
                    this._context.SaveChanges();
                    view = new PerformerView(original);

                    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, view);
                    //response.Headers.Location = new Uri(Url.Link("Default", new { id = performer.performerID }));
                    return response;
                }
                catch (Exception ex)
                {
                    return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex);
                }
            }
            else
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
            }
        }
        public HttpResponseMessage Update(PerformerView view)
        {
            if (!String.IsNullOrWhiteSpace(view.emailAddress) &&
                this._context.performers.Any(p => p.emailAddress == view.emailAddress && p.id != view.id))
            {
                return Request.CreateErrorResponse(HttpStatusCode.Conflict, "Email already in use");
            }
            else if (ModelState.IsValid)
            {
                try
                {

                    if (!String.IsNullOrWhiteSpace(view.newPassword))
                    {
                        view.password = Crypter.Blowfish.Crypt(view.newPassword);
                    }

                    var original = this._context.performers.FirstOrDefault(p => p.id == view.id);
                    original.updated = DateTime.UtcNow;
                    AutoMapper.Mapper.CreateMap<Performer, Performer>();
                    AutoMapper.Mapper.Map<Performer, Performer>(view.convert(this._context), original);
                    this._context.SaveChanges();
                }
                catch (Exception ex)
                {
                    return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
                }

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, view);
                //response.Headers.Location = new Uri(Url.Link("Default", new { id = performer.performerID }));
                return response;
            }
            else
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
            }
        }