public HttpResponseMessage Create(AdministratorView view)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    if (!String.IsNullOrWhiteSpace(view.newPassword))
                    {
                        view.password = Crypter.Blowfish.Crypt(view.newPassword);
                    }

                    var original = view.convert(this._context);
                    original.created = DateTime.UtcNow;
                    this._context.administrators.Add(original);
                    this._context.SaveChanges();
                    view = new AdministratorView(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(AdministratorView view)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var original = this._context.administrators.FirstOrDefault(a => a.id == view.id);

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

                    AutoMapper.Mapper.CreateMap<Administrator, Administrator>();
                    AutoMapper.Mapper.Map<Administrator, Administrator>(view.convert(this._context), original);
                    this._context.SaveChanges();
                }
                catch (Exception ex)
                {
                    return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, 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);
            }
        }
        public HttpResponseMessage Login(AdministratorView view)
        {
            var original = this._context.administrators.FirstOrDefault(p => p.username == view.username);

            if (original == null)
            {
                return Request.CreateResponse(HttpStatusCode.NotFound);
            }

            if (CryptSharp.Crypter.CheckPassword(view.password, original.password))
            {
                return Request.CreateResponse(HttpStatusCode.OK, original);
            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.NotFound);
            }
        }