public IActionResult DeleteSubmission(string submissionId, [FromBody] DeleteCaseSubmissionRequest request)
        {
            var validator        = new DeleteCaseSubmissionRequestValidator();
            var validatioResults = validator.Validate(request);

            if (!validatioResults.IsValid)
            {
                return(BadRequest(validatioResults.ToString()));
            }

            try
            {
                _formSubmissionsUseCase.ExecuteDelete(submissionId, request);
            }
            catch (WorkerNotFoundException e)
            {
                return(UnprocessableEntity(e.Message));
            }
            catch (DeleteSubmissionException e)
            {
                return(UnprocessableEntity(e.Message));
            }
            catch (SubmissionAlreadyDeletedException e)
            {
                return(StatusCode(StatusCodes.Status410Gone, e.Message));
            }

            return(NoContent());
        }
Ejemplo n.º 2
0
        public void ExecuteDelete(string submissionId, DeleteCaseSubmissionRequest request)
        {
            _ = GetSanitisedWorker(request.DeletedBy);

            var submissionToBeDeleted = _mongoGateway.LoadRecordById <CaseSubmission>(_collectionName, ObjectId.Parse(submissionId));

            if (submissionToBeDeleted == null)
            {
                throw new DeleteSubmissionException($"Submission with ID {submissionId} not found");
            }

            if (submissionToBeDeleted.Deleted == true)
            {
                throw new SubmissionAlreadyDeletedException($"Submission with ID { submissionId} has already been deleted");
            }

            if (submissionToBeDeleted.FormId?.ToLower() != FormIdName.ChildCaseNote && submissionToBeDeleted.FormId?.ToLower() != FormIdName.AdultCaseNote)
            {
                throw new UnsupportedSubmissionTypeException($"Submission type { submissionToBeDeleted.FormId} cannot be deleted");
            }

            submissionToBeDeleted.Deleted = true;

            submissionToBeDeleted.DeletionDetails = new DeletionDetails()
            {
                DeletedAt         = DateTime.Now,
                DeletedBy         = request.DeletedBy,
                DeleteReason      = request.DeleteReason,
                DeleteRequestedBy = request.DeleteRequestedBy
            };

            _mongoGateway.UpsertRecord(_collectionName, ObjectId.Parse(submissionId), submissionToBeDeleted);
        }