// DELETE: odata/Projects(5)
        public async Task <IHttpActionResult> Delete([FromODataUri] int key)
        {
            //Get access token to SharePoint
            string accessToken = await _tokenProvider.GetSharePointAccessToken();

            if (accessToken == null)
            {
                throw new UnauthorizedAccessException();
            }

            //Get project from SharePoint
            //string rootUri = Request.RequestUri.OriginalString.Substring(0, Request.RequestUri.OriginalString.IndexOf(Request.GetODataPath().Segments[0].ToString()));
            string  eTag    = Request.Headers.IfMatch.ToString();
            Project project = await _repository.GetProject(accessToken, key, eTag);

            if (String.IsNullOrEmpty(eTag))
            {
                eTag = "*";
            }

            if (eTag == project.__eTag || eTag == "*")
            {
                if (await _repository.DeleteProject(accessToken, key, eTag))
                {
                    return(StatusCode(HttpStatusCode.NoContent));
                }

                return(StatusCode(HttpStatusCode.InternalServerError));
            }

            return(StatusCode(HttpStatusCode.Conflict));
        }
예제 #2
0
        public async Task <ActionResult <ProjectDto> > DeleteProject(string userid, string projectid)
        {
            if (!ExternalIdPassedGuidValidation(userid))
            {
                return(StatusCode(StatusCodes.Status400BadRequest, $"Invalid {nameof(userid)}."));
            }

            if (!ExternalIdPassedGuidValidation(projectid))
            {
                return(StatusCode(StatusCodes.Status400BadRequest, $"Invalid {nameof(projectid)}."));
            }

            Project project;

            try
            {
                project = await databaseRepository.GetProjectAsync(projectid);
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status400BadRequest, ex.Message));
            }

            if (!UserHaveAccessToProject(userid, project))
            {
                return(StatusCode(StatusCodes.Status400BadRequest, $"Access denied to project with external id: {projectid}."));
            }

            try
            {
                databaseRepository.DeleteProject(project);
                await mediator.Publish <ProjectDeletedMessage>(new ProjectDeletedMessage(projectid));

                await databaseRepository.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }

            ProjectDto projectDto;

            try
            {
                projectDto = mapper.Map <ProjectDto>(project);
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }

            return(Ok(projectDto));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            var userName = GetUserName();

            Project project = _repository.GetProjectById(id);

            if (project.Client.ClientOwner.Equals(userName))
            {
                _repository.DeleteProject(project);
            }

            return(RedirectToAction("Index"));
        }
예제 #4
0
        public async Task <IActionResult> DeleteProject(long projectId)
        {
            if (!_projectsRepository.ProjectExists(projectId))
            {
                return(NotFound());
            }

            var projectEntity = await _projectsRepository.GetProjectByIdAsync(projectId);

            if (projectEntity == null)
            {
                return(NotFound());
            }

            _projectsRepository.DeleteProject(projectEntity);

            if (!(await _projectsRepository.SaveChangesAsync()))
            {
                return(StatusCode(500, "A problem happened while handling your request."));
            }
            return(NoContent());
        }
예제 #5
0
 public void DeleteProject(int id)
 {
     _projectRepo.DeleteProject(id);
 }
예제 #6
0
 private void OnDeleteProject(Project project)
 {
     projectsRepository.DeleteProject(project);
 }