Ejemplo n.º 1
0
        public async Task <IHttpActionResult> AddDocument([FromBody] DocumentModel document)
        {
            if (document == null)
            {
                return(BadRequest("Document body required"));
            }

            if (document.Data == null)
            {
                return(BadRequest("Document data is missing"));
            }

            if (string.IsNullOrWhiteSpace(document.FormatCodeName))
            {
                return(BadRequest("Format code name is null or empty"));
            }

            if (string.IsNullOrWhiteSpace(document.FormatCode))
            {
                return(BadRequest("Format code is null or empty"));
            }

            if (document.ReplaceId != null && document.ReplaceId == string.Empty)
            {
                return(BadRequest("Replace ID cannot be empty"));
            }

            var queueDocumentData = new QueueDocumentData
            {
                CdaPackage          = document.Data,
                DocumentIdToReplace = document.ReplaceId,
                FormatCode          = document.FormatCode,
                FormatCodeName      = document.FormatCodeName
            };

            DocumentEntity documentEntity;

            try
            {
                documentEntity = await _queueManager.AddDocumentToQueue(queueDocumentData);
            }
            catch (ArgumentException e) // Thrown when the document to replace is invalid
            {
                return(BadRequest(e.Message));
            }
            catch (ValidationException ve) // Thrown when the request is invalid
            {
                List <string> errors = ve.Errors.Select(e => e.ErrorMessage).ToList();
                return(BadRequest(string.Join(" ", errors)));
            }
            catch (SignatureVerificationException sve) // Thrown when the package contents are invalid
            {
                return(BadRequest(sve.Message));
            }
            catch (ZipException ze) // Thrown when the zip file is invalid
            {
                return(BadRequest(ze.Message));
            }

            DocumentModel createdDocument = MapDocumentEntityToDocument(documentEntity);

            return(Created(new Uri(createdDocument.DocumentLink), createdDocument));
        }