public DocumentInfo ProcessStructuredDocument(DocumentRequest request) { using (var transaction = this.unitOfWork.BeginTransaction()) { IncomingDoc incomingDoc = new IncomingDoc(); incomingDoc.DocumentGuid = Guid.NewGuid(); incomingDoc.IncomingDate = DateTime.Now; incomingDoc.IncomingDocStatusId = this.unitOfWork.DbContext.Set<IncomingDocStatus>().Single(e => e.Alias == "Pending").IncomingDocStatusId; IncomingDocFile incomingDocFile = new IncomingDocFile(); incomingDocFile.DocFileTypeId = this.unitOfWork.DbContext.Set<DocFileType>().Single(e => e.Alias == "XML").DocFileTypeId; incomingDocFile.Name = String.Format("WebPortalApp_{0}_{1}", DateTime.Now.ToString(), Guid.NewGuid().ToString()); incomingDocFile.DocFileName = String.Format("WebPortalApp_{0}_{1}.xml", DateTime.Now.ToString(), Guid.NewGuid().ToString()); incomingDocFile.DocFileContent = request.DocumentData; incomingDocFile.IncomingDoc = incomingDoc; this.unitOfWork.DbContext.Set<IncomingDocFile>().Add(incomingDocFile); this.unitOfWork.Save(); transaction.Commit(); DocumentInfo documentInfo = new DocumentInfo(); documentInfo.DocumentGuid = incomingDoc.DocumentGuid; documentInfo.RegistrationStatus = DocumentRegistrationStatus.Pending; documentInfo.DocumentData = new AISDocument(); documentInfo.DocumentData.Name = incomingDocFile.Name; documentInfo.DocumentData.Content = Utf8Utils.GetBytes(request.DocumentData); return documentInfo; } }
public DocumentInfo GetDocumentInfo(R_0009_000001.DocumentURI uri, Guid? guid) { if (guid.HasValue) { IncomingDoc incomingDoc = this.docRepository.GetIncomingDocByDocumentGuid(guid.Value); DocumentInfo documentInfo = new DocumentInfo(); documentInfo.DocumentGuid = guid.Value; if (incomingDoc.IncomingDocStatus.Alias == "Pending") { documentInfo.RegistrationStatus = DocumentRegistrationStatus.Pending; IncomingDocFile incomingDocFile = incomingDoc.IncomingDocFiles.FirstOrDefault(); if (incomingDocFile != null) { documentInfo.DocumentData = new AISDocument(); documentInfo.DocumentData.Name = incomingDocFile.Name; documentInfo.DocumentData.Content = Utf8Utils.GetBytes(incomingDocFile.DocFileContent); } } else if (incomingDoc.IncomingDocStatus.Alias == "Registered" || incomingDoc.IncomingDocStatus.Alias == "NotRegistered") { var mainDocIncomingDoc = incomingDoc.DocIncomingDocs.FirstOrDefault(d => d.IsDocInitial); if (mainDocIncomingDoc != null) { Doc doc = this.unitOfWork.DbContext.Set<Doc>() .Include(e => e.DocFiles) .SingleOrDefault(e => e.DocId == mainDocIncomingDoc.DocId); DocFile primary = doc.DocFiles.FirstOrDefault(e => e.IsPrimary); if (primary != null) { documentInfo.DocumentData = new R_0009_000085.AISDocument(); documentInfo.DocumentData.Name = primary.Name; documentInfo.DocumentData.Content = ReadFromBlob(primary.DocFileContentId); } } DocumentURI receiptDocumentUri = null; var receiptDocIncomingDoc = incomingDoc.DocIncomingDocs.FirstOrDefault(d => !d.IsDocInitial); if (receiptDocIncomingDoc != null) { var receiptDoc = this.unitOfWork.DbContext.Set<Doc>() .SingleOrDefault(e => e.DocId == receiptDocIncomingDoc.DocId); if (receiptDoc != null) { receiptDocumentUri = new DocumentURI(); receiptDocumentUri.RegisterIndex = receiptDoc.RegIndex; receiptDocumentUri.SequenceNumber = receiptDoc.RegNumber.Value.ToString("D6"); receiptDocumentUri.ReceiptOrSigningDate = receiptDoc.RegDate; } } if (incomingDoc.IncomingDocStatus.Alias == "Registered") { documentInfo.RegistrationStatus = DocumentRegistrationStatus.Registered; documentInfo.AcceptedDocumentUri = receiptDocumentUri; } else { documentInfo.RegistrationStatus = DocumentRegistrationStatus.NotRegistered; documentInfo.NotAcceptedDocumentUri = receiptDocumentUri; } } return documentInfo; } else { throw new ArgumentException(); } }