Exemplo n.º 1
0
        public CaseFileInfo GetCaseFileInfo(DocumentURI uri, string publicAccessCode)
        {
            if (uri != null || String.IsNullOrWhiteSpace(publicAccessCode))
            {
                var caseDoc = this.docRepository.GetByRegUriAndAccessCode(uri.RegisterIndex, int.Parse(uri.SequenceNumber), uri.ReceiptOrSigningDate.Value, publicAccessCode);
                if (caseDoc != null)
                {
                    var mosvElectronicServiceProvider = this.unitOfWork.DbContext.Set<ElectronicServiceProvider>().Where(e => e.Code == caseDoc.DocType.ElectronicServiceProvider).FirstOrDefault();

                    CaseFileInfo caseFileInfo = new CaseFileInfo();
                    caseFileInfo.AISCaseDataInternetAccess = new AISCaseDataInternetAccess();
                    caseFileInfo.AISCaseDataInternetAccess.Name = !String.IsNullOrWhiteSpace(caseDoc.DocType.ApplicationName) ? caseDoc.DocType.ApplicationName : caseDoc.DocType.Name;
                    caseFileInfo.AISCaseDataInternetAccess.ServiceName = mosvElectronicServiceProvider != null ? mosvElectronicServiceProvider.Name : "МОСВ";
                    caseFileInfo.AISCaseDataInternetAccess.URI = new AISCaseURI();
                    caseFileInfo.AISCaseDataInternetAccess.URI.DocumentURI = uri;
                    caseFileInfo.AISCaseDataInternetAccess.Documents = new Documents();
                    caseFileInfo.AISCaseDataInternetAccess.Documents.DocumentCollection = new DocumentCollection();

                    var serviceStages =
                        this.unitOfWork.DbContext.Set<DocElectronicServiceStage>()
                        .Include(s => s.ElectronicServiceStage.ElectronicServiceStageExecutors)
                        .Where(s => s.DocId == caseDoc.DocId)
                        .OrderBy(s => s.ElectronicServiceStageId)
                        .ToList();

                    if (serviceStages.Count > 0)
                    {

                        caseFileInfo.AISCaseDataInternetAccess.Stages = new AISCaseDataInternetAccessStages();
                        caseFileInfo.AISCaseDataInternetAccess.Stages.StageCollection = new AISCaseDataInternetAccessStagesStageCollection();

                        foreach (var serviceStage in serviceStages)
                        {
                            var stage = new AISCaseDataInternetAccessStagesStage();
                            stage.ActualCompletionDate = serviceStage.EndingDate;
                            stage.StageDescription = serviceStage.ElectronicServiceStage.Description;
                            stage.StageName = serviceStage.ElectronicServiceStage.Name;

                            string executorPosition = String.Empty;
                            string executorName = String.Empty;

                            if (serviceStage.ElectronicServiceStage.ElectronicServiceStageExecutors.Count > 0)
                            {
                                Tuple<string, string> postionAndName = this.docRepository.GetPositionAndNameById(serviceStage.ElectronicServiceStage.ElectronicServiceStageExecutors.First().UnitId);

                                executorPosition = postionAndName.Item1;
                                executorName = postionAndName.Item2;
                            }

                            stage.Executor = new R_0009_000041.ServiceStageExecutor();
                            stage.Executor.PositionInAdministrationOrAISUser = new PositionInAdministrationOrAISUser();
                            stage.Executor.PositionInAdministrationOrAISUser.AISUserBasicData = new AISUserBasicData();
                            stage.Executor.PositionInAdministrationOrAISUser.AISUserBasicData.Position = new AISUserPositionInAdministration();
                            stage.Executor.PositionInAdministrationOrAISUser.AISUserBasicData.Position.Position = new Position();
                            stage.Executor.PositionInAdministrationOrAISUser.AISUserBasicData.Position.Position.EKDAPositonName = executorPosition;

                            Tuple<string, string, string> splitNames = Helper.SplitNames(executorName);
                            stage.Executor.PositionInAdministrationOrAISUser.AISUserBasicData.Names = new AISUserNames();
                            stage.Executor.PositionInAdministrationOrAISUser.AISUserBasicData.Names.PersonNames = new PersonNames();
                            stage.Executor.PositionInAdministrationOrAISUser.AISUserBasicData.Names.PersonNames.First = splitNames.Item1;
                            stage.Executor.PositionInAdministrationOrAISUser.AISUserBasicData.Names.PersonNames.Middle = splitNames.Item2;
                            stage.Executor.PositionInAdministrationOrAISUser.AISUserBasicData.Names.PersonNames.Last = splitNames.Item3;

                            caseFileInfo.AISCaseDataInternetAccess.Stages.StageCollection.Add(stage);
                        }
                    }

                    var docs = this.docRepository.FindPublicLeafsByDocId(caseDoc.DocId);

                    foreach (var doc in docs)
                    {

                        DocFile docFile =
                            this.unitOfWork.DbContext.Set<DocFile>()
                            .Include(d => d.DocFileKind)
                            .Include(d => d.DocFileType)
                            .Where(d => d.DocId == doc.DocId)
                            .OrderByDescending(d => d.IsPrimary)
                            .ThenBy(d => d.DocFileId)
                            .FirstOrDefault();

                        Document document = new Document();
                        document.AccessIdentifier = doc.RegUri;
                        document.AISDocumentRegisterDocumentData = new AISDocumentRegisterDocumentData();
                        document.AISDocumentRegisterDocumentData.RegistrationTime = doc.RegDate;
                        document.AISDocumentRegisterDocumentData.RegisteredDocumentURI = new RegisteredDocumentURI();
                        document.AISDocumentRegisterDocumentData.RegisteredDocumentURI.DocumentURI = new DocumentURI();
                        document.AISDocumentRegisterDocumentData.RegisteredDocumentURI.DocumentURI.RegisterIndex = doc.RegIndex;
                        document.AISDocumentRegisterDocumentData.RegisteredDocumentURI.DocumentURI.SequenceNumber = doc.RegNumber.HasValue ? doc.RegNumber.ToString() : null;
                        document.AISDocumentRegisterDocumentData.RegisteredDocumentURI.DocumentURI.ReceiptOrSigningDate = doc.RegDate;
                        document.AISDocumentRegisterDocumentData.DocumentType = new AdministrativeNomenclatureDocumentTypeBasicData();
                        document.AISDocumentRegisterDocumentData.DocumentType.Name = doc.DocType.Name;
                        if (doc.DocType.IsElectronicService)
                        {
                            document.AISDocumentRegisterDocumentData.DocumentType.URI = new AdministrativeNomenclatureDocumentTypeURI();
                            document.AISDocumentRegisterDocumentData.DocumentType.URI.SegmentUnifiedDataURI = new UnifiedDataURI();
                            if (!String.IsNullOrWhiteSpace(doc.DocType.ElectronicServiceFileTypeUri))
                            {
                                document.AISDocumentRegisterDocumentData.DocumentType.URI.SegmentUnifiedDataURI.RegisterIndex = doc.DocType.ElectronicServiceFileTypeUri.Split(new char[] { '-' })[0];
                                document.AISDocumentRegisterDocumentData.DocumentType.URI.SegmentUnifiedDataURI.BatchNumber = doc.DocType.ElectronicServiceFileTypeUri.Split(new char[] { '-' })[1];
                            }
                        }

                        document.AISDocument = new R_0009_000085.AISDocument();

                        if (docFile != null && docFile.DocFileKind.Alias.ToLower() == "PublicAttachedFile".ToLower())
                        {
                            document.AISDocument.Name = docFile.DocFileName;
                            document.AISDocument.DocumentProcessType = "0006-000050";   //TODO: Consider value
                            document.AISDocument.ObjectCreationData = new R_0009_000032.AISObjectCreationData();
                            document.AISDocument.ObjectCreationData.CreationTime = doc.RegDate;

                            document.AISDocumentRegisterDocumentData.DocumentElectronicTransportType = docFile.DocFileType.MimeType;
                        }

                        string registratorPosition = String.Empty;
                        string registratorName = String.Empty;
                        if (doc.DocWorkflows.Any(e => e.DocWorkflowAction.Alias == "Registration"))
                        {
                            int? unitId = doc.DocWorkflows.Where(e => e.DocWorkflowAction.Alias == "Registration").First().PrincipalUnitId;
                            if (unitId.HasValue)
                            {
                                Tuple<string, string> postionAndName = this.docRepository.GetPositionAndNameById(unitId.Value);

                                registratorPosition = postionAndName.Item1;
                                registratorName = postionAndName.Item2;
                            }
                        }

                        Tuple<string, string, string> splitNames = Helper.SplitNames(registratorName);
                        document.AISDocumentRegisterDocumentData.RegisteredBy = new R_0009_000070.RegistrationInDocumentRegisterRegistrar();
                        document.AISDocumentRegisterDocumentData.RegisteredBy.AISUserBasicData = new R_0009_000027.AISUserBasicData();
                        document.AISDocumentRegisterDocumentData.RegisteredBy.AISUserBasicData.Names = new R_0009_000018.AISUserNames();
                        document.AISDocumentRegisterDocumentData.RegisteredBy.AISUserBasicData.Names.PersonNames = new R_0009_000005.PersonNames();
                        document.AISDocumentRegisterDocumentData.RegisteredBy.AISUserBasicData.Names.PersonNames.First = splitNames.Item1;
                        document.AISDocumentRegisterDocumentData.RegisteredBy.AISUserBasicData.Names.PersonNames.Middle = splitNames.Item2;
                        document.AISDocumentRegisterDocumentData.RegisteredBy.AISUserBasicData.Names.PersonNames.Last = splitNames.Item3;

                        document.AISDocumentRegisterDocumentData.RegisteredBy.AISUserBasicData.Position = new R_0009_000026.AISUserPositionInAdministration();
                        document.AISDocumentRegisterDocumentData.RegisteredBy.AISUserBasicData.Position.Position = new R_0009_000026.Position();
                        document.AISDocumentRegisterDocumentData.RegisteredBy.AISUserBasicData.Position.Position.EKDAPositonName = registratorPosition;

                        caseFileInfo.AISCaseDataInternetAccess.Documents.DocumentCollection.Add(document);
                    }

                    return caseFileInfo;
                }
                else
                {
                    return null;
                }
            }
            else
            {
                throw new ArgumentException();
            }
        }
Exemplo n.º 2
0
        public ServiceStatus GetServiceStatus(DocumentURI uri, string serviceIdentifier)
        {
            if (uri != null)
            {
                var doc = this.docRepository.GetDocByRegUriIncludeElectronicServiceStages(uri.RegisterIndex, int.Parse(uri.SequenceNumber), uri.ReceiptOrSigningDate.Value);
                if (doc != null)
                {
                    ServiceStatus serviceStatus = new ServiceStatus();
                    serviceStatus.InitiatingDocumentURI = new InitiatingDocumentURI();
                    serviceStatus.InitiatingDocumentURI.RegisterIndex = uri.RegisterIndex;
                    serviceStatus.InitiatingDocumentURI.SequenceNumber = uri.SequenceNumber;
                    serviceStatus.InitiatingDocumentURI.ReceiptOrSigningDate = uri.ReceiptOrSigningDate;
                    //if (!String.IsNullOrWhiteSpace(doc.DocType.ElectronicServiceFileTypeUri))
                    //{
                    //    serviceStatus.ServiceURI = new AdministrativeNomenclatureServiceURI();
                    //    serviceStatus.ServiceURI.SUNAUServiceURI = doc.DocType.ElectronicServiceFileTypeUri;
                    //}
                    serviceStatus.ServiceURI = new AdministrativeNomenclatureServiceURI();
                    serviceStatus.ServiceURI.SUNAUServiceURI = !String.IsNullOrWhiteSpace(doc.DocType.ApplicationName) ? doc.DocType.ApplicationName : doc.DocType.Name;

                    var allStages = this.unitOfWork.DbContext.Set<ElectronicServiceStage>()
                        .Where(e => e.DocTypeId == doc.DocTypeId.Value)
                        .OrderBy(e => e.ElectronicServiceStageId)
                        .ToList();

                    if (doc.DocElectronicServiceStages.Where(s => s.EndingDate.HasValue).Any())
                    {
                        serviceStatus.ExecutedTasks = new ExecutedTasks();
                        serviceStatus.ExecutedTasks.TaskCollection = new TaskCollection();

                        foreach (var executedStage in doc.DocElectronicServiceStages.Where(s => s.EndingDate.HasValue))
                        {
                            var stage = allStages.Where(s => s.ElectronicServiceStageId == executedStage.ElectronicServiceStageId).FirstOrDefault();

                            if (stage != null)
                            {
                                var task = new Task();

                                task.TaskData = new AISTask();
                                task.TaskData.NameAndShortDescription = stage.Name;
                                task.TaskData.ExpandedDescription = stage.Description; ;
                                task.TaskData.ScheduledStartDate = executedStage.StartingDate;
                                task.TaskData.ScheduledCompletionDate = executedStage.ExpectedEndingDate;
                                task.TaskData.ActualStartDate = executedStage.StartingDate;
                                task.TaskData.ActualCompletionDate = executedStage.EndingDate;
                                task.TaskData.ExecutedBy = new AISTaskExecutor();
                                task.TaskData.ExecutedBy.Names = new AISUserNames();
                                task.TaskData.ExecutedBy.Names.PersonNames = new PersonNames();
                                task.TaskData.ExecutedBy.Names.PersonNames.First = doc.DocSourceType.Alias == "Internet" && stage.Alias == "AcceptApplication" ? "Системен потребител" : "Служител МОСВ";

                                serviceStatus.ExecutedTasks.TaskCollection.Add(task);
                            }
                        }
                    }

                    var unexecutedStages =
                        allStages.Where(s =>
                        !doc.DocElectronicServiceStages.Where(ds => ds.EndingDate.HasValue).Select(ds => ds.ElectronicServiceStageId).ToList()
                        .Contains(s.ElectronicServiceStageId));

                    if (unexecutedStages.Any())
                    {
                        serviceStatus.UnexecutedTasks = new UnexecutedTasks();
                        serviceStatus.UnexecutedTasks.TaskOrServiceStageCollection = new TaskOrServiceStageCollection();

                        foreach (var unexecutedStage in unexecutedStages)
                        {
                            if (unexecutedStage.Alias != "DecreeRefusal")
                            {
                                var task = new TaskOrServiceStage();
                                task.Task = new TaskOrServiceStageTask();
                                task.Task.TaskData = new AISTask();
                                task.Task.TaskData.NameAndShortDescription = unexecutedStage.Name;
                                task.Task.TaskData.ExpandedDescription = unexecutedStage.Description;
                                task.Task.TaskData.ScheduledStartDate = null;
                                task.Task.TaskData.ScheduledCompletionDate = null;
                                task.Task.TaskData.ExecutedBy = new AISTaskExecutor();
                                task.Task.TaskData.ExecutedBy.Names = new AISUserNames();
                                task.Task.TaskData.ExecutedBy.Names.PersonNames = new PersonNames();
                                task.Task.TaskData.ExecutedBy.Names.PersonNames.First = "Служител МОСВ";

                                serviceStatus.UnexecutedTasks.TaskOrServiceStageCollection.Add(task);
                            }
                        }
                    }

                    return serviceStatus;
                }
                else
                {
                    throw new Exception("Document not found.");
                }
            }
            else
            {
                throw new ArgumentException();
            }
        }
Exemplo n.º 3
0
        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();
            }
        }
Exemplo n.º 4
0
        public Stream GetDocumentContent(DocumentURI uri, Guid? guid)
        {
            var doc = this.docRepository.GetDocByRegUri(uri.RegisterIndex, int.Parse(uri.SequenceNumber), uri.ReceiptOrSigningDate.Value);

            if (doc != null)
            {
                DocFile docFile = this.docRepository.GetPrimaryOrFirstDocFileByDocId(doc.DocId);
                if (docFile != null)
                {
                    var content = ReadFromBlob(docFile.DocFileContentId);

                    return new MemoryStream(content);
                }
            }

            throw new Exception("Document not found.");
        }
Exemplo n.º 5
0
 public CaseFileInfo GetCaseFileInfo(DocumentURI uri, string publicAccessCode)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 6
0
        public ServiceStatus GetServiceStatus(DocumentURI uri, string serviceIdentifier)
        {
            var doc = this.docRepository.GetDocByRegUri(uri.RegisterIndex, int.Parse(uri.SequenceNumber), uri.ReceiptOrSigningDate.Value);
            if (doc != null)
            {
                ServiceStatus serviceStatus = new ServiceStatus();
                serviceStatus.InitiatingDocumentURI = new InitiatingDocumentURI();
                serviceStatus.InitiatingDocumentURI.RegisterIndex = uri.RegisterIndex;
                serviceStatus.InitiatingDocumentURI.SequenceNumber = uri.SequenceNumber;
                serviceStatus.InitiatingDocumentURI.ReceiptOrSigningDate = uri.ReceiptOrSigningDate;

                DocElectronicServiceStage currentDocStage = this.docRepository.GetCurrentServiceStageByDocId(doc.DocId);

                if (currentDocStage != null)
                {

                    serviceStatus.UnexecutedTasks = new UnexecutedTasks();
                    serviceStatus.UnexecutedTasks.TaskOrServiceStageCollection = new TaskOrServiceStageCollection();

                    var task = new TaskOrServiceStage();
                    task.Task = new TaskOrServiceStageTask();
                    task.Task.TaskData = new AISTask();
                    task.Task.TaskData.NameAndShortDescription = currentDocStage.ElectronicServiceStage.Name;
                    task.Task.TaskData.ExpandedDescription = currentDocStage.ElectronicServiceStage.Description;
                    task.Task.TaskData.ActualStartDate = currentDocStage.StartingDate;
                    task.Task.TaskData.ActualCompletionDate = currentDocStage.EndingDate;

                    serviceStatus.UnexecutedTasks.TaskOrServiceStageCollection.Add(task);
                }

                return serviceStatus;
            }
            else
            {
                throw new Exception("Document not found.");
            }
        }