public async Task<bool> UpdateProject(string accessToken, Project project)
        {
            StringBuilder requestUri = new StringBuilder()
                .Append(this.SiteUrl)
                .Append("/_api/web/lists/getbyTitle('")
                .Append(this.ProjectsListName)
                .Append("')/getItemByStringId('")
                .Append(project.Id.ToString())
                .Append("')");

            XElement entry = project.ToXElement();

            StringContent requestContent = new StringContent(entry.ToString());
            HttpResponseMessage response = await this.Patch(requestUri.ToString(), accessToken, project.__eTag, requestContent);
            return response.IsSuccessStatusCode;
        }
        public async Task<Project> CreateProject(string accessToken, Project project)
        {
            StringBuilder requestUri = new StringBuilder()
                 .Append(this.SiteUrl)
                 .Append("/_api/web/lists/getbyTitle('")
                 .Append(this.ProjectsListName)
                 .Append("')/items");

            XElement entry = project.ToXElement();

            StringContent requestContent = new StringContent(entry.ToString());
            HttpResponseMessage response = await this.Post(requestUri.ToString(), accessToken, requestContent);
            string responseString = await response.Content.ReadAsStringAsync();

            return XElement.Parse(responseString).ToProject();

        }
 // PUT: odata/Projects(5)
 public IHttpActionResult Put([FromODataUri] int key, Project project)
 {
     return StatusCode(HttpStatusCode.NotImplemented);
 }
        // POST: odata/Projects
        public async Task<IHttpActionResult> Post(Project project)
        {

            //Get access token to SharePoint
            string accessToken = await _tokenProvider.GetSharePointAccessToken();
            if (accessToken == null)
            {
                throw new UnauthorizedAccessException();
            }

            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            Project newProject = await _repository.CreateProject(accessToken, project);

            return Created(newProject);
        }
 // PUT: odata/Projects(5)
 public IHttpActionResult Put([FromODataUri] int key, Project project)
 {
     Request.ValidateAntiForgery();
     return StatusCode(HttpStatusCode.NotImplemented);
 }