Beispiel #1
0
 public PersonsController(
     IUnitOfWork unitOfWork,
     ILotRepository lotRepository,
     IPersonRepository personRepository,
     IApplicationRepository applicationRepository,
     IApplicationStageRepository applicationStageRepository,
     ICaseTypeRepository caseTypeRepository,
     INomRepository nomRepository,
     IFileRepository fileRepository,
     IPersonDocumentRepository personDocumentRepository,
     ILotEventDispatcher lotEventDispatcher,
     UserContext userContext)
 {
     this.unitOfWork = unitOfWork;
     this.lotRepository = lotRepository;
     this.personRepository = personRepository;
     this.applicationRepository = applicationRepository;
     this.applicationStageRepository = applicationStageRepository;
     this.caseTypeRepository = caseTypeRepository;
     this.nomRepository = nomRepository;
     this.fileRepository = fileRepository;
     this.personDocumentRepository = personDocumentRepository;
     this.lotEventDispatcher = lotEventDispatcher;
     this.userContext = userContext;
 }
Beispiel #2
0
 public ApplicationsController(
     IUnitOfWork unitOfWork,
     ILotRepository lotRepository,
     IPersonRepository personRepository,
     IOrganizationRepository organizationRepository,
     IAircraftRepository aircraftRepository,
     IAirportRepository airportRepository,
     IEquipmentRepository equipmentRepository,
     IDocRepository docRepository,
     IApplicationRepository applicationRepository,
     INomRepository nomRepository,
     IFileRepository fileRepository,
     IExaminationSystemRepository examinationSystemRepository,
     ILotEventDispatcher lotEventDispatcher,
     UserContext userContext)
 {
     this.unitOfWork = unitOfWork;
     this.lotRepository = lotRepository;
     this.personRepository = personRepository;
     this.organizationRepository = organizationRepository;
     this.aircraftRepository = aircraftRepository;
     this.airportRepository = airportRepository;
     this.equipmentRepository = equipmentRepository;
     this.docRepository = docRepository;
     this.applicationRepository = applicationRepository;
     this.nomRepository = nomRepository;
     this.examinationSystemRepository = examinationSystemRepository;
     this.fileRepository = fileRepository;
     this.lotEventDispatcher = lotEventDispatcher;
     this.userContext = userContext;
 }
Beispiel #3
0
 public AircraftsController(
     IUnitOfWork unitOfWork,
     ILotRepository lotRepository,
     IInventoryRepository inventoryRepository,
     IAircraftRepository aircraftRepository,
     IAircraftRegistrationRepository aircraftRegistrationRepository,
     IAircraftRegMarkRepository aircraftRegMarkRepository,
     ISModeCodeRepository sModeCodeRepository,
     IFileRepository fileRepository,
     IApplicationRepository applicationRepository,
     ICaseTypeRepository caseTypeRepository,
     ILotEventDispatcher lotEventDispatcher,
     UserContext userContext)
 {
     this.unitOfWork = unitOfWork;
     this.lotRepository = lotRepository;
     this.inventoryRepository = inventoryRepository;
     this.aircraftRepository = aircraftRepository;
     this.aircraftRegistrationRepository = aircraftRegistrationRepository;
     this.aircraftRegMarkRepository = aircraftRegMarkRepository;
     this.sModeCodeRepository = sModeCodeRepository;
     this.fileRepository = fileRepository;
     this.applicationRepository = applicationRepository;
     this.caseTypeRepository = caseTypeRepository;
     this.lotEventDispatcher = lotEventDispatcher;
     this.userContext = userContext;
 }
Beispiel #4
0
        public void NewCorrespondentSpec()
        {
            IUnitOfWork unitOfWork1 = null;
            ICorrespondentRepository correspondentRepository1 = null;
            UserContext userContext1 = null;

            IUnitOfWork unitOfWork2 = null;
            ICorrespondentRepository correspondentRepository2 = null;
            UserContext userContext2 = null;

            "A new correspondent setup".ContextFixture(() =>
            {
                var lf1 = container.BeginLifetimeScope();
                unitOfWork1 = lf1.Resolve<IUnitOfWork>();
                correspondentRepository1 = lf1.Resolve<ICorrespondentRepository>();
                userContext1 = new UserContext(1);

                var lf2 = container.BeginLifetimeScope();
                unitOfWork2 = lf2.Resolve<IUnitOfWork>();
                correspondentRepository2 = lf2.Resolve<ICorrespondentRepository>();
                userContext2 = new UserContext(1);

                return DisposableTuple.Create(lf1, lf2);
            });

            "can be created as bg citizen".Assert(() =>
            {
                var corr1 = correspondentRepository1.CreateBgCitizen(2, 1, true, "Иван", "Иванов", "1212120909", userContext1);
                unitOfWork1.Save();

                var corr2 = correspondentRepository2.GetCorrespondent(corr1.CorrespondentId);
                Assert.NotNull(corr2);
            });
            "can be created as legal entity".Assert(() =>
            {
                var corr1 = correspondentRepository1.CreateLegalEntity(2, 3, true, "Фирма Х", "10203040503", userContext1);
                unitOfWork1.Save();

                var corr2 = correspondentRepository2.GetCorrespondent(corr1.CorrespondentId);
                Assert.NotNull(corr2);
            });
            "can be created as foreigner".Assert(() =>
            {
                var corr1 = correspondentRepository1.CreateForeigner(2, 2, true, "John", "Doe", null, "Downtown", DateTime.Now, userContext1);
                unitOfWork1.Save();

                var corr2 = correspondentRepository2.GetCorrespondent(corr1.CorrespondentId);
                Assert.NotNull(corr2);
            });
            "can be created as foreign legal entity".Assert(() =>
            {
                var corr1 = correspondentRepository1.CreateFLegalEntity(2, 4, true, "Company X", null, "Ltd.", "001", "Other data", userContext1);
                unitOfWork1.Save();

                var corr2 = correspondentRepository2.GetCorrespondent(corr1.CorrespondentId);
                Assert.NotNull(corr2);
            });
        }
Beispiel #5
0
        protected override void Initialize(System.Web.Http.Controllers.HttpControllerContext controllerContext)
        {
            base.Initialize(controllerContext);

            try
            {
                this.userContext = this.Request.GetUserContext();
            }
            catch { }
        }
 public ExaminationSystemController(
     IUnitOfWork unitOfWork,
     ILotRepository lotRepository,
     IExaminationSystemRepository examinationSystemRepository,
     UserContext userContext)
 {
     this.unitOfWork = unitOfWork;
     this.lotRepository = lotRepository;
     this.examinationSystemRepository = examinationSystemRepository;
     this.userContext = userContext;
 }
Beispiel #7
0
 public SModeCodesController(
     IUnitOfWork unitOfWork,
     ILotRepository lotRepository,
     INomRepository nomRepository,
     ISModeCodeRepository sModeCodeRepository,
     ICaseTypeRepository caseTypeRepository,
     ILotEventDispatcher lotEventDispatcher,
     UserContext userContext)
 {
     this.unitOfWork = unitOfWork;
     this.lotRepository = lotRepository;
     this.nomRepository = nomRepository;
     this.sModeCodeRepository = sModeCodeRepository;
     this.caseTypeRepository = caseTypeRepository;
     this.lotEventDispatcher = lotEventDispatcher;
     this.userContext = userContext;
 }
 public AplicationsCaseController(
     IUnitOfWork unitOfWork,
     ILotRepository lotRepository,
     IDocRepository docRepository,
     IApplicationRepository applicationRepository,
     IFileRepository fileRepository,
     ICaseTypeRepository caseTypeRepository,
     ILotEventDispatcher lotEventDispatcher,
     UserContext userContext)
 {
     this.unitOfWork = unitOfWork;
     this.lotRepository = lotRepository;
     this.docRepository = docRepository;
     this.applicationRepository = applicationRepository;
     this.lotEventDispatcher = lotEventDispatcher;
     this.fileRepository = fileRepository;
     this.caseTypeRepository = caseTypeRepository;
     this.userContext = userContext;
 }
Beispiel #9
0
 public EquipmentsController(
     IUnitOfWork unitOfWork,
     ILotRepository lotRepository,
     IInventoryRepository inventoryRepository,
     IEquipmentRepository equipmentRepository,
     IApplicationRepository applicationRepository,
     ICaseTypeRepository caseTypeRepository,
     ILotEventDispatcher lotEventDispatcher,
     UserContext userContext)
 {
     this.unitOfWork = unitOfWork;
     this.lotRepository = lotRepository;
     this.inventoryRepository = inventoryRepository;
     this.equipmentRepository = equipmentRepository;
     this.applicationRepository = applicationRepository;
     this.caseTypeRepository = caseTypeRepository;
     this.lotEventDispatcher = lotEventDispatcher;
     this.userContext = userContext;
 }
Beispiel #10
0
 public OrganizationsController(
     IUnitOfWork unitOfWork,
     ILotRepository lotRepository,
     IInventoryRepository inventoryRepository,
     IOrganizationRepository organizationRepository,
     IApplicationRepository applicationRepository,
     ICaseTypeRepository caseTypeRepository,
     INomRepository nomRepository,
     ILotEventDispatcher lotEventDispatcher,
     UserContext userContext)
 {
     this.unitOfWork = unitOfWork;
     this.lotRepository = lotRepository;
     this.inventoryRepository = inventoryRepository;
     this.organizationRepository = organizationRepository;
     this.applicationRepository = applicationRepository;
     this.caseTypeRepository = caseTypeRepository;
     this.nomRepository = nomRepository;
     this.lotEventDispatcher = lotEventDispatcher;
     this.userContext = userContext;
 }
Beispiel #11
0
        public IHttpActionResult GetDocsForChange(
            int id,
            int limit = 10,
            int offset = 0,
            DateTime? fromDate = null,
            DateTime? toDate = null,
            string regUri = null,
            string docName = null,
            int? docTypeId = null,
            int? docStatusId = null,
            string corrs = null,
            string units = null
            )
        {
            this.userContext = this.Request.GetUserContext();

            UnitUser unitUser = this.unitOfWork.DbContext.Set<UnitUser>().FirstOrDefault(e => e.UserId == this.userContext.UserId);

            ClassificationPermission readPermission = this.unitOfWork.DbContext.Set<ClassificationPermission>().SingleOrDefault(e => e.Alias == "Read");

            int totalCount = 0;

            List<Doc> docs = new List<Doc>();
            List<int> docRelations = this.docRepository.fnGetSubordinateDocs(id);

            docs = this.docRepository.GetDocsForChange(
                      fromDate,
                      toDate,
                      regUri,
                      docName,
                      docTypeId,
                      docStatusId,
                      corrs,
                      units,
                      docRelations,
                      limit,
                      offset,
                      readPermission,
                      unitUser,
                      out totalCount);

            List<DocListItemDO> returnValue = docs.Select(e => new DocListItemDO(e, unitUser)).ToList();

            StringBuilder sb = new StringBuilder();

            if (totalCount >= 10000)
            {
                sb.Append("Има повече от 10000 резултата, моля, въведете допълнителни филтри.");
            }

            return Ok(new
            {
                documents = returnValue,
                documentCount = totalCount,
                msg = sb.ToString()
            });
        }
Beispiel #12
0
        public IHttpActionResult GetDocs(
            int limit = 10,
            int offset = 0,
            string filter = null,
            DateTime? fromDate = null,
            DateTime? toDate = null,
            string regUri = null,
            string docName = null,
            int? docTypeId = null,
            int? docStatusId = null,
            bool? hideRead = null,
            bool? isCase = null,
            string corrs = null,
            string units = null,
            string ds = null
            )
        {
            this.userContext = this.Request.GetUserContext();

            UnitUser unitUser = this.unitOfWork.DbContext.Set<UnitUser>().FirstOrDefault(e => e.UserId == this.userContext.UserId);
            ClassificationPermission readPermission = this.unitOfWork.DbContext.Set<ClassificationPermission>().SingleOrDefault(e => e.Alias == "Read");
            DocSourceType docSourceType = this.unitOfWork.DbContext.Set<DocSourceType>().SingleOrDefault(e => e.Alias == "Internet");
            DocCasePartType docCasePartType = this.unitOfWork.DbContext.Set<DocCasePartType>().SingleOrDefault(e => e.Alias == "Control");
            List<DocStatus> docStatuses = this.unitOfWork.DbContext.Set<DocStatus>().Where(e => e.IsActive).ToList();
            List<DocUnitRole> docUnitRoles = this.unitOfWork.DbContext.Set<DocUnitRole>()
                .Where(e => e.Alias.ToLower() == "incharge" || e.Alias.ToLower() == "controlling" || e.Alias.ToLower() == "to")
                .ToList();

            int totalCount = 0;
            DocView docView = DocView.Normal;
            List<Doc> docs = new List<Doc>();

            switch (filter)
            {
                case null:
                case "current":
                    //текущи преписки
                    docs = this.docRepository.GetCurrentCaseDocs(
                        fromDate,
                        toDate,
                        regUri,
                        docName,
                        docTypeId,
                        docStatusId,
                        hideRead,
                        isCase,
                        corrs,
                        units,
                        ds,
                        limit,
                        offset,
                        docCasePartType,
                        docStatuses,
                        readPermission,
                        unitUser,
                        out totalCount);
                    break;
                case "finished":
                    //приключени преписки
                    docs = this.docRepository.GetFinishedCaseDocs(
                        fromDate,
                        toDate,
                        regUri,
                        docName,
                        docTypeId,
                        docStatusId,
                        hideRead,
                        isCase,
                        corrs,
                        units,
                        ds,
                        limit,
                        offset,
                        docCasePartType,
                        docStatuses,
                        readPermission,
                        unitUser,
                        out totalCount);
                    break;
                case "manage":
                    //за управление
                    docs = this.docRepository.GetDocsForManagement(
                       fromDate,
                       toDate,
                       regUri,
                       docName,
                       docTypeId,
                       docStatusId,
                       hideRead,
                       isCase,
                       corrs,
                       units,
                       ds,
                       limit,
                       offset,
                       docCasePartType,
                       docStatuses,
                       readPermission,
                       unitUser,
                       out totalCount);

                    docView = DocView.ForManagement;
                    break;
                case "control":
                    //за контрол и изпълнение
                    docs = this.docRepository.GetDocsForControl(
                      fromDate,
                      toDate,
                      regUri,
                      docName,
                      docTypeId,
                      docStatusId,
                      hideRead,
                      isCase,
                      corrs,
                      units,
                      ds,
                      limit,
                      offset,
                      docCasePartType,
                      docStatuses,
                      readPermission,
                      docUnitRoles,
                      unitUser,
                      out totalCount);

                    docView = DocView.ForControl;
                    break;
                case "draft":
                    //чернови
                    docs = this.docRepository.GetDraftDocs(
                      fromDate,
                      toDate,
                      regUri,
                      docName,
                      docTypeId,
                      docStatusId,
                      hideRead,
                      isCase,
                      corrs,
                      units,
                      ds,
                      limit,
                      offset,
                      docCasePartType,
                      docStatuses,
                      readPermission,
                      unitUser,
                      out totalCount);
                    break;
                case "unfinished":
                    //неприключени
                    docs = this.docRepository.GetUnfinishedDocs(
                      fromDate,
                      toDate,
                      regUri,
                      docName,
                      docTypeId,
                      docStatusId,
                      hideRead,
                      isCase,
                      corrs,
                      units,
                      ds,
                      limit,
                      offset,
                      docCasePartType,
                      docStatuses,
                      readPermission,
                      unitUser,
                      out totalCount);
                    break;
                case "portal":
                    //от портал
                    docs = this.docRepository.GetPortalDocs(
                      fromDate,
                      toDate,
                      regUri,
                      docName,
                      docTypeId,
                      docStatusId,
                      hideRead,
                      isCase,
                      corrs,
                      units,
                      ds,
                      limit,
                      offset,
                      docCasePartType,
                      docStatuses,
                      readPermission,
                      docSourceType,
                      unitUser,
                      out totalCount);
                    break;
                case "new":
                    //нова поща
                    throw new NotImplementedException();
                case "allControl":
                    //всички контролни
                    docs = this.docRepository.GetControlDocs(
                      fromDate,
                      toDate,
                      regUri,
                      docName,
                      docTypeId,
                      docStatusId,
                      hideRead,
                      isCase,
                      corrs,
                      units,
                      ds,
                      limit,
                      offset,
                      docCasePartType,
                      readPermission,
                      unitUser,
                      out totalCount);
                    break;
                case "all":
                default:
                    //всички
                    docs = this.docRepository.GetDocs(
                      fromDate,
                      toDate,
                      regUri,
                      docName,
                      docTypeId,
                      docStatusId,
                      hideRead,
                      isCase,
                      corrs,
                      units,
                      ds,
                      limit,
                      offset,
                      docCasePartType,
                      readPermission,
                      unitUser,
                      out totalCount);
                    break;
            };

            List<int> loadedDocIds = docs.Select(e => e.DocId).ToList();

            var docHasReads = this.unitOfWork.DbContext.Set<DocHasRead>()
                .Where(e => e.UnitId == unitUser.UnitId && loadedDocIds.Contains(e.DocId)).ToList();

            List<DocListItemDO> returnValue = docs.Select(e => new DocListItemDO(e, unitUser)).ToList();

            foreach (var item in returnValue)
            {
                List<DocRelation> resolutionDocRelations =
                    this.unitOfWork.DbContext.Set<DocRelation>()
                    .Include(e => e.Doc.DocDirection)
                    .Include(e => e.Doc.DocCasePartType)
                    .Include(e => e.Doc.DocType)
                    .Include(e => e.Doc.DocEntryType)
                    .Where(e => e.ParentDocId == item.DocId &&
                        (e.Doc.DocStatus.Alias == "Processed" || e.Doc.DocStatus.Alias == "Finished") &&
                        (e.Doc.DocEntryType.Alias == "Resolution" || e.Doc.DocEntryType.Alias == "Task"))
                    .ToList();

                if (resolutionDocRelations.Any())
                {
                    var resolutionDocIds = resolutionDocRelations.Select(r => r.DocId).ToArray();

                    this.unitOfWork.DbContext.Set<DocUnit>()
                         .Include(e => e.Unit.UnitRelations.Select(er => er.ParentUnit))
                         .Include(e => e.DocUnitRole)
                         .Where(e => resolutionDocIds.Contains(e.DocId))
                         .ToList();

                    item.ResolutionDocRelations.AddRange(resolutionDocRelations.Select(r => new DocRelationDO(r)));
                }

                if (docView == DocView.ForControl || docView == DocView.ForManagement)
                {
                    int? rootId = this.unitOfWork.DbContext.Set<DocRelation>()
                        .FirstOrDefault(e => e.DocId == item.DocId)
                        .RootDocId;

                    if (rootId.HasValue)
                    {
                        DocRelation rootDocRelation = this.unitOfWork.DbContext.Set<DocRelation>()
                            .Include(e => e.Doc.DocDirection)
                            .Include(e => e.Doc.DocCasePartType)
                            .Include(e => e.Doc.DocType)
                            .Include(e => e.Doc.DocEntryType)
                            .FirstOrDefault(e => e.DocId == rootId.Value);

                        item.CaseDocRelation = new DocRelationDO(rootDocRelation);

                        var docCorrespondents = this.unitOfWork.DbContext.Set<DocCorrespondent>()
                            .Include(e => e.Correspondent.CorrespondentType)
                            .Where(e => e.DocId == rootId.Value)
                            .ToList();

                        item.DocCorrespondents.AddRange(docCorrespondents.Select(e => new DocCorrespondentDO(e)).ToList());
                    }
                }
                else
                {
                    var docCorrespondents = this.unitOfWork.DbContext.Set<DocCorrespondent>()
                        .Include(e => e.Correspondent.CorrespondentType)
                        .Where(e => e.DocId == item.DocId)
                        .ToList();

                    item.DocCorrespondents.AddRange(docCorrespondents.Select(e => new DocCorrespondentDO(e)).ToList());
                }
            }

            StringBuilder sb = new StringBuilder();

            if (totalCount >= 10000)
            {
                sb.Append("Има повече от 10000 резултата, моля, въведете допълнителни филтри.");
            }

            List<int> docIds = Helper.GetIdListFromString(ds);
            if (docIds.Any())
            {
                int min = docIds.Min(),
                    max = docIds.Max();

                DocListItemDO minDoc = new DocListItemDO(this.docRepository.Find(min));
                DocListItemDO maxDoc = new DocListItemDO(this.docRepository.Find(max));

                if (minDoc != null && maxDoc != null)
                {
                    sb.AppendFormat("Документите са регистрирани с номера от <strong>{0}</strong> до <strong>{1}</strong>", minDoc.RegUri, maxDoc.RegUri);
                }
                else
                {
                    sb.Append("Проблем с регистрирането на документите");
                }
            }

            return Ok(new
                {
                    docView = docView.ToString(),
                    documents = returnValue,
                    documentCount = totalCount,
                    msg = sb.ToString()
                });
        }
        private void ReloadStatePerPerson(
            int lotId,
            List<GvaExSystExaminee> allPersonExams,
            Dictionary<string, GvaExSystQualification> allQualifications,
            List<CaseDO> cases,
            UserContext userContext)
        {
            Lot lot = this.lotRepository.GetLotIndex(lotId);
            PartVersion<PersonExamSystDataDO> examSystDataPartVersion = lot.Index.GetPart<PersonExamSystDataDO>("personExamSystData");
            var qualificationCodes = allPersonExams.Select(e => e.Exam.QualificationCode).Distinct();
            List<GvaExSystQualification> allPersonQualifications = new List<GvaExSystQualification>();
            foreach(var qualificationCode in qualificationCodes)
            {
                allPersonQualifications.Add(allQualifications[qualificationCode]);
            }

            List<PersonExamSystStateDO> newStates = new List<PersonExamSystStateDO>();
            foreach (GvaExSystQualification qualification in allPersonQualifications)
            {
                var certPaths = qualification.CertPaths.GroupBy(p => p.Code);
                foreach (var certPath in certPaths)
                {
                    List<string> requiredExamCodes = certPath.Select(p => p.ExamCode).Distinct().ToList();
                    List<GvaExSystExaminee> availableExams = allPersonExams
                            .Where(e => requiredExamCodes.Contains(e.ExamCode))
                            .ToList();

                    PersonExamSystStateDO lastState = null;
                    if (examSystDataPartVersion != null)
                    {
                        lastState = examSystDataPartVersion.Content.States
                            .Where(s => s.QualificationCode == qualification.Code)
                            .OrderByDescending(s => s.FromDate)
                            .FirstOrDefault();

                        if (lastState != null)
                        {
                            if (lastState.State == "Finished" || lastState.State == "Canceled")
                            {
                                availableExams = availableExams
                                    .Where(t => t.EndTime.Subtract(lastState.FromDate).TotalHours >= 24)
                                    .ToList();
                            }
                            else
                            {
                                availableExams = availableExams
                                    .Where(t => t.EndTime.Subtract(lastState.FromDate).TotalHours >= 0)
                                    .ToList();
                            }
                        }

                        if (availableExams.Count() == 0)
                        {
                            continue;
                        }

                        var firstExam = availableExams.OrderBy(t => t.EndTime).First();

                        if (lastState != null && lastState.State == "Started")
                        {
                            var newStateFisrtExam = availableExams.Where(e => e.EndTime > lastState.ToDate.Value)
                                .OrderBy(e => e.EndTime)
                                .FirstOrDefault();

                            if (newStateFisrtExam != null)
                            {
                                newStates.Add(new PersonExamSystStateDO()
                                {
                                    FromDate = newStateFisrtExam.EndTime,
                                    ToDate = newStateFisrtExam.EndTime.AddMonths(18),
                                    QualificationCode = qualification.Code,
                                    QualificationName = qualification.Name,
                                    StateMethod = QualificationStateMethod.Automatically.ToString(),
                                    State = QualificationState.Started.ToString()
                                });
                                break;
                            }

                            var firstFailedExam = availableExams.OrderBy(t => t.EndTime).Where(e => e.ResultStatus == "failed").LastOrDefault();
                            if (availableExams.Where(t => t.CertCampCode != null).Select(t => t.CertCampCode).Distinct().Count() > 6)
                            {
                                newStates.Add(new PersonExamSystStateDO()
                                {
                                    FromDate = firstFailedExam != null ? firstFailedExam.EndTime : lastState.FromDate,
                                    ToDate = lastState.ToDate,
                                    QualificationCode = qualification.Code,
                                    QualificationName = qualification.Name,
                                    Notes = "Достигнат е пределно допустим брой сесиии",
                                    StateMethod = QualificationStateMethod.Automatically.ToString(),
                                    State = QualificationState.Canceled.ToString()
                                });
                                break;
                            }

                            if (availableExams.GroupBy(c => c.ExamCode).Any(t => t.Count() >= 4 && t.All(c => c.ResultStatus == "failed")))
                            {
                                newStates.Add(new PersonExamSystStateDO()
                                {
                                    FromDate = firstFailedExam != null ? firstFailedExam.EndTime : lastState.FromDate,
                                    ToDate = lastState.ToDate,
                                    QualificationCode = qualification.Code,
                                    QualificationName = qualification.Name,
                                    Notes = "Достигнат е пределно допустим брой на невзети изпити за тест",
                                    StateMethod = QualificationStateMethod.Automatically.ToString(),
                                    State = QualificationState.Canceled.ToString()
                                });
                                break;
                            }
                        }
                    }

                    if (availableExams.Count() == 0)
                    {
                        continue;
                    }

                    bool allExamsArePassed = true;
                    foreach (string requiredExamCode in requiredExamCodes)
                    {
                        if (availableExams.Where(t => t.ResultStatus == "passed" && t.ExamCode == requiredExamCode).Count() == 0)
                        {
                            allExamsArePassed = false;
                            break;
                        }
                    }

                    if (allExamsArePassed)
                    {
                        newStates.Add(new PersonExamSystStateDO()
                        {
                            FromDate = availableExams.OrderBy(t => t.EndTime).Last().EndTime,
                            QualificationCode = qualification.Code,
                            QualificationName = qualification.Name,
                            StateMethod = QualificationStateMethod.Automatically.ToString(),
                            State = QualificationState.Finished.ToString()
                        });
                        break;
                    }

                    if (availableExams.Count() > 0 && (lastState == null || lastState.State != "Started"))
                    {
                        var exam = availableExams.OrderBy(t => t.EndTime).First();
                        newStates.Add(new PersonExamSystStateDO()
                        {
                            FromDate = exam.EndTime,
                            ToDate = exam.EndTime.AddMonths(18),
                            QualificationCode = qualification.Code,
                            QualificationName = qualification.Name,
                            StateMethod = QualificationStateMethod.Automatically.ToString(),
                            State = QualificationState.Started.ToString()
                        });
                        break;
                    }
                }
            }

            if (newStates.Count() > 0)
            {
                if (examSystDataPartVersion == null)
                {
                    examSystDataPartVersion = lot.CreatePart("personExamSystData", new PersonExamSystDataDO() { States = newStates}, userContext);
                    this.fileRepository.AddFileReferences(examSystDataPartVersion.Part, cases);
                }
                else
                {
                    examSystDataPartVersion.Content.States.AddRange(newStates);
                    lot.UpdatePart("personExamSystData", examSystDataPartVersion.Content, userContext);
                }

                lot.Commit(userContext, lotEventDispatcher);

                this.unitOfWork.Save();

                this.lotRepository.ExecSpSetLotPartTokens(examSystDataPartVersion.PartId);
            }
        }
        public void ReloadStates(UserContext userContext)
        {
            var allPersonsWithQualificationsToReload =
                this.unitOfWork.DbContext.Set<GvaExSystExaminee>()
                .Include(e => e.Exam)
                .ToList()
                .GroupBy(q => q.LotId);

            Dictionary<string, GvaExSystQualification> allQualifications = this.unitOfWork.DbContext.Set<GvaExSystQualification>()
                .Include(c => c.CertPaths)
                .ToDictionary(q => q.Code, q => q);

            var cases = this.caseTypeRepository.GetCaseTypesForSet("person")
                    .Select(ct => new CaseDO()
                    {
                        CaseType = new NomValue()
                        {
                            NomValueId = ct.GvaCaseTypeId,
                            Name = ct.Name,
                            Alias = ct.Alias
                        },
                        IsAdded = true
                    })
                    .ToList();

            foreach (var person in allPersonsWithQualificationsToReload)
            {
                this.ReloadStatePerPerson(person.Key, person.ToList(), allQualifications, cases, userContext);
            }
        }
Beispiel #15
0
        public void SavedCorrespondentSpec()
        {
            int crCorrespondentId = 0;
            int crCorrespondentIdWithContacts = 0;

            IUnitOfWork unitOfWork1 = null;
            ICorrespondentRepository correspondentRepository1 = null;
            UserContext userContext1 = null;

            IUnitOfWork unitOfWork2 = null;
            ICorrespondentRepository correspondentRepository2 = null;
            UserContext userContext2 = null;

            "An existing correspondent and nomenclatures".ContextFixture(() =>
            {
                using (var lf = container.BeginLifetimeScope())
                {
                    var unitOfWork = lf.Resolve<IUnitOfWork>();
                    var correspondentRepository = lf.Resolve<ICorrespondentRepository>();
                    var userContext = new UserContext(1);

                    var corr1 = correspondentRepository.CreateLegalEntity(2, 3, true, "Фирма Х", "102030405", userContext);

                    var corr2 = correspondentRepository.CreateLegalEntity(2, 3, true, "Фирма Y", "201058583", userContext);
                    corr2.CreateCorrespondentContact("Vasil Petrov", "0110130441", "", true, userContext);

                    unitOfWork.Save();
                    crCorrespondentId = corr1.CorrespondentId;
                    crCorrespondentIdWithContacts = corr2.CorrespondentId;
                }

                var lf1 = container.BeginLifetimeScope();
                unitOfWork1 = lf1.Resolve<IUnitOfWork>();
                correspondentRepository1 = lf1.Resolve<ICorrespondentRepository>();
                userContext1 = new UserContext(1);

                var lf2 = container.BeginLifetimeScope();
                unitOfWork2 = lf2.Resolve<IUnitOfWork>();
                correspondentRepository2 = lf2.Resolve<ICorrespondentRepository>();
                userContext2 = new UserContext(1);

                return DisposableTuple.Create(lf1, lf2);
            });

            "can be found and edited".Assert(() =>
            {
                var correspondents = correspondentRepository1.GetCorrespondents(null, null, 10, 0);
                Assert.NotEmpty(correspondents);

                var corr1 = correspondentRepository1.GetCorrespondent(crCorrespondentId);
                Assert.NotNull(corr1);

                corr1.LegalEntityBulstat = "102034343";
                unitOfWork1.Save();

                var corr2 = correspondentRepository2.GetCorrespondent(corr1.CorrespondentId);
                Assert.Equal("102034343", corr2.LegalEntityBulstat);
            });

            "can be added correspondent contact".Assert(() =>
            {
                var corr1 = correspondentRepository1.GetCorrespondent(crCorrespondentId);
                corr1.CreateCorrespondentContact("Petar Petrov", "0110130441", "", true, userContext1);
                unitOfWork1.Save();

                var corr2 = correspondentRepository2.GetCorrespondent(crCorrespondentId);
                Assert.NotEmpty(corr2.CorrespondentContacts);
            });

            "can be removed correspondent contact".Assert(() =>
            {
                var corr1 = correspondentRepository1.GetCorrespondent(crCorrespondentIdWithContacts);

                Assert.NotEmpty(corr1.CorrespondentContacts);

                corr1.DeleteCorrespondentContact(corr1.CorrespondentContacts.First(), userContext1);
                unitOfWork1.Save();

                var corr2 = correspondentRepository2.GetCorrespondent(crCorrespondentIdWithContacts);
                Assert.Empty(corr2.CorrespondentContacts);
            });

            "cannot be modified concurrently".Assert(() =>
            {
                var corr1 = correspondentRepository1.GetCorrespondent(crCorrespondentId);
                corr1.LegalEntityBulstat = "102034343";

                var corr2 = correspondentRepository2.GetCorrespondent(crCorrespondentId);
                corr2.CreateCorrespondentContact("Petar Petrov", "0110130441", "", true, userContext2);
                unitOfWork2.Save();

                Assert.Throws<DbUpdateConcurrencyException>(() => unitOfWork1.Save());
            });

            "can be deleted".Assert(() =>
            {
                var corr1 = correspondentRepository1.GetCorrespondent(crCorrespondentId);
                correspondentRepository1.DeteleCorrespondent(crCorrespondentId, corr1.Version);
                unitOfWork1.Save();

                var corr2 = correspondentRepository2.GetCorrespondent(crCorrespondentId);
                Assert.Null(corr2);
            });
        }
Beispiel #16
0
        public void Process(int pendingIncomingDocId)
        {
            try
            {
                using (var transaction = this.unitOfWork.BeginTransaction())
                {
                    //Init user variables
                    User systemUser = this.unitOfWork.DbContext.Set<User>().Single(e => e.Username == "system");
                    UnitUser systemUnitUser = this.unitOfWork.DbContext.Set<UnitUser>().Include(e => e.Unit).Single(e => e.UserId == systemUser.UserId);
                    UserContext systemUserContext = new UserContext(systemUser.UserId);

                    IncomingDoc incomingDoc = this.unitOfWork.DbContext.Set<IncomingDoc>()
                        .Include(e => e.IncomingDocFiles)
                        .Where(e => e.IncomingDocId == pendingIncomingDocId)
                        .Single();

                    IncomingDocFile incomingDocFile = incomingDoc.IncomingDocFiles.First();

                    string xmlContent = incomingDocFile.DocFileContent;
                    object rioApplication = rioDocumentParser.XmlDeserializeApplication(xmlContent);

                    ApplicationDataDo applicationDataDo = rioObjectExtractor.Extract<ApplicationDataDo>(rioApplication);

                    IList<AttachedDocDo> attachedDocuments = rioObjectExtractor.Extract<IList<AttachedDocDo>>(rioApplication);
                    MarkAttachedFilesAsUsed(attachedDocuments);

                    List<ElectronicDocumentDiscrepancyTypeNomenclature> discrepancies = GetValidationDiscrepancies(xmlContent, applicationDataDo, attachedDocuments);
                    bool isDocAcknowledged = discrepancies.Count == 0;

                    incomingDoc.IncomingDocStatusId = this.unitOfWork.DbContext.Set<IncomingDocStatus>()
                        .Where(e => e.Alias == (isDocAcknowledged ? "Registered" : "NotRegistered"))
                        .Single()
                        .IncomingDocStatusId;

                    List<Correspondent> docCorrespondents = this.GetDocumentCorrespondents(applicationDataDo.ElectronicServiceApplicant, applicationDataDo.ElectronicServiceApplicantContactData);
                    foreach (var correspondent in docCorrespondents.Where(c => c.CorrespondentId == 0))
                    {
                        this.unitOfWork.DbContext.Set<Correspondent>().Add(correspondent);
                        this.unitOfWork.Save();
                    }

                    //TODO: Implement
                    //var validationErrors = rioValidator.ValidateRioApplication(null, xmlContent)
                    List<string> validationErrors = new List<string>();

                    Doc rootDoc = null;
                    if (applicationDataDo.DocumentURI != null)
                    {
                        string regIndex = applicationDataDo.DocumentURI.RegisterIndex.PadLeft(4, '0');
                        int regNumber = int.Parse(applicationDataDo.DocumentURI.SequenceNumber);
                        DateTime regdDate = applicationDataDo.DocumentURI.ReceiptOrSigningDate.Value;

                        rootDoc = this.docRepository.GetDocByRegUri(regIndex, regNumber, regdDate);
                    }

                    string electronicServiceFileTypeUri = String.Format("{0}-{1}", applicationDataDo.DocumentTypeURI.RegisterIndex, applicationDataDo.DocumentTypeURI.BatchNumber);
                    int docTypeId = this.unitOfWork.DbContext.Set<DocType>().Single(e => e.ElectronicServiceFileTypeUri == electronicServiceFileTypeUri).DocTypeId;

                    //Initial Doc
                    Doc initialDoc = CreateInitialDoc(isDocAcknowledged, validationErrors, docTypeId, rootDoc == null, systemUser);
                    this.unitOfWork.DbContext.Set<Doc>().Add(initialDoc);

                    foreach (var correspondent in docCorrespondents)
                    {
                        DocCorrespondent docCorrespondent = new DocCorrespondent();
                        docCorrespondent.Doc = initialDoc;
                        docCorrespondent.Correspondent = correspondent;
                        this.unitOfWork.DbContext.Set<DocCorrespondent>().Add(docCorrespondent);
                    }

                    DocIncomingDoc initialDocIncomingDoc = new DocIncomingDoc();
                    initialDocIncomingDoc.Doc = initialDoc;
                    initialDocIncomingDoc.IncomingDoc = incomingDoc;
                    initialDocIncomingDoc.IsDocInitial = true;
                    initialDocIncomingDoc.CreateDate = DateTime.Now;
                    this.unitOfWork.DbContext.Set<DocIncomingDoc>().Add(initialDocIncomingDoc);

                    this.unitOfWork.Save();

                    DocRelation initialDocRelation = CreateInitialDocRelation(initialDoc, rootDoc);
                    this.unitOfWork.DbContext.Set<DocRelation>().Add(initialDocRelation);

                    this.unitOfWork.Save();

                    this.docRepository.RegisterDoc(initialDoc, systemUnitUser, systemUserContext);

                    AddDocUnit(initialDoc, systemUnitUser.Unit, systemUser);

                    var parentDocClassifications = AddDocClassification(initialDoc, systemUser);

                    this.unitOfWork.Save();

                    this.docRepository.ExecSpSetDocTokens(docId: initialDoc.DocId);
                    this.docRepository.ExecSpSetDocUnitTokens(docId: initialDoc.DocId);

                    initialDoc.SetReceiptOrder(this.docRepository.GetNextReceiptOrder(initialDoc.DocId), systemUserContext);

                    Guid fileKey = WriteToBlob(Utf8Utils.GetBytes(incomingDocFile.DocFileContent));

                    DocFileKind publicDocFileKind = this.unitOfWork.DbContext.Set<DocFileKind>().Single(e => e.Alias == "PublicAttachedFile");

                    var docFileType = this.unitOfWork.DbContext.Set<DocFileType>().SingleOrDefault(e => e.Alias == applicationDataDo.DocFileTypeAlias);

                    DocFile initialDocFile = CreateInitialDocFile(initialDoc, fileKey, docFileType.DocFileTypeId, publicDocFileKind.DocFileKindId, applicationDataDo.ApplicationSigningTime);
                    this.unitOfWork.DbContext.Set<DocFile>().Add(initialDocFile);

                    //Add attached application files as DocFiles
                    if (attachedDocuments != null && attachedDocuments.Count > 0)
                    {
                        foreach (var attachedAppFile in attachedDocuments)
                        {
                            byte[] fileContent = null;
                            if (attachedAppFile.UseAbbcdn)
                            {
                                fileContent = AbbcdnStorage.DownloadFile(Guid.Parse(attachedAppFile.UniqueIdentifier)).ContentBytes;
                            }
                            else
                            {
                                fileContent = attachedAppFile.BytesContent;
                            }

                            Guid key = WriteToBlob(fileContent);

                            DocFile attachedAppDocFile = CreateEApplicationAttachDocFile(attachedAppFile, initialDoc, publicDocFileKind.DocFileKindId, key);
                            this.unitOfWork.DbContext.Set<DocFile>().Add(attachedAppDocFile);
                        }
                    }

                    this.unitOfWork.Save();

                    //ReceiptDoc
                    Doc receiptDoc = CreateReceiptDoc(isDocAcknowledged, systemUser);
                    this.unitOfWork.DbContext.Set<Doc>().Add(receiptDoc);

                    DocIncomingDoc receiptDocIncomingDoc = new DocIncomingDoc();
                    receiptDocIncomingDoc.Doc = receiptDoc;
                    receiptDocIncomingDoc.IncomingDoc = incomingDoc;
                    receiptDocIncomingDoc.IsDocInitial = false;
                    receiptDocIncomingDoc.CreateDate = DateTime.Now;
                    this.unitOfWork.DbContext.Set<DocIncomingDoc>().Add(receiptDocIncomingDoc);

                    this.unitOfWork.Save();

                    DocRelation receiptDocRelation = CreateReceiptDocRelation(initialDoc, receiptDoc, rootDoc);
                    this.unitOfWork.DbContext.Set<DocRelation>().Add(receiptDocRelation);

                    this.unitOfWork.Save();

                    this.docRepository.RegisterDoc(receiptDoc, systemUnitUser, systemUserContext);

                    AddDocUnit(receiptDoc, systemUnitUser.Unit, systemUser);

                    AddDocClassification(receiptDoc, systemUser);

                    foreach (var item in parentDocClassifications.Where(i => i.IsInherited))
                    {
                        receiptDoc.CreateDocClassification(item.ClassificationId, item.IsInherited, systemUserContext);
                    }

                    this.unitOfWork.Save();

                    this.docRepository.ExecSpSetDocTokens(docId: receiptDoc.DocId);
                    this.docRepository.ExecSpSetDocUnitTokens(docId: receiptDoc.DocId);

                    receiptDoc.SetReceiptOrder(this.docRepository.GetNextReceiptOrder(receiptDoc.DocId), systemUserContext);

                    Guid receiptFileKey = CreateReceiptDocFileContent(initialDoc, receiptDoc, rootDoc, discrepancies, applicationDataDo);

                    DocFile receiptDocFile = CreateReceiptDocFile(publicDocFileKind.DocFileKindId, receiptDoc, receiptFileKey, isDocAcknowledged);
                    this.unitOfWork.DbContext.Set<DocFile>().Add(receiptDocFile);

                    // TODO
                    //if (applicationDataDo.SendConfirmationEmail)
                    //{
                        AddReceiveConfirmationEmailRecord(isDocAcknowledged, systemUser, docCorrespondents, rootDoc ?? initialDoc, discrepancies);
                    //}

                    this.unitOfWork.Save();

                    AddBeginningServiceStage(docTypeId, initialDoc);

                    AddCheckRegularityServiceStage(docTypeId, initialDoc);

                    this.unitOfWork.Save();

                    transaction.Commit();
                }
            }
            catch (Exception ex)
            {
                logger.Error("IncommingDocProcessor Exception: " + Helper.GetDetailedExceptionInfo(ex));

                using (var factory = unitOfWorkFactory())
                {
                    this.unitOfWork = factory.Value;

                    var incomingDoc = this.unitOfWork.DbContext.Set<IncomingDoc>().SingleOrDefault(e => e.IncomingDocId == pendingIncomingDocId);

                    incomingDoc.IncomingDocStatusId = this.unitOfWork.DbContext.Set<IncomingDocStatus>().Single(e => e.Alias == "Incorrect").IncomingDocStatusId;

                    this.unitOfWork.Save();
                }
            }
        }
Beispiel #17
0
 public LotRepository(IUnitOfWork unitOfWork, UserContext userContext)
 {
     this.unitOfWork = unitOfWork;
     this.userContext = userContext;
 }
Beispiel #18
0
        public IHttpActionResult GetDocsForSelect(
            int limit = 10,
            int offset = 0,
            string filter = null,
            DateTime? fromDate = null,
            DateTime? toDate = null,
            string regUri = null,
            string docName = null,
            int? docTypeId = null,
            int? docStatusId = null,
            bool? hideRead = null,
            string corrs = null,
            string units = null,
            string ds = null,
            int? isChosen = null
            )
        {
            this.userContext = this.Request.GetUserContext();

            UnitUser unitUser = this.unitOfWork.DbContext.Set<UnitUser>().FirstOrDefault(e => e.UserId == this.userContext.UserId);
            ClassificationPermission readPermission = this.unitOfWork.DbContext.Set<ClassificationPermission>().SingleOrDefault(e => e.Alias == "Read");
            DocSourceType docSourceType = this.unitOfWork.DbContext.Set<DocSourceType>().SingleOrDefault(e => e.Alias == "Internet");
            DocCasePartType docCasePartType = this.unitOfWork.DbContext.Set<DocCasePartType>().SingleOrDefault(e => e.Alias == "Control");
            List<DocStatus> docStatuses = this.unitOfWork.DbContext.Set<DocStatus>().Where(e => e.IsActive).ToList();
            List<DocUnitRole> docUnitRoles = this.unitOfWork.DbContext.Set<DocUnitRole>()
                .Where(e => e.Alias.ToLower() == "incharge" || e.Alias.ToLower() == "controlling" || e.Alias.ToLower() == "to")
                .ToList();

            int totalCount = 0;
            List<Doc> docs = new List<Doc>();

            //? if possible implement to search for docs that are not connected to lots
            //if (isChosen == 1) //true
            //{
            //    List<AopApp> allAopApps = this.unitOfWork.DbContext.Set<AopApp>().ToList();
            //    List<int> aopAppDocIds =
            //        allAopApps.Where(e => e.STDocId.HasValue).Select(e => e.STDocId.Value)
            //        .Union(allAopApps.Where(e => e.STChecklistId.HasValue).Select(e => e.STChecklistId.Value))
            //        .Union(allAopApps.Where(e => e.STNoteId.HasValue).Select(e => e.STNoteId.Value))
            //        .Union(allAopApps.Where(e => e.NDDocId.HasValue).Select(e => e.NDDocId.Value))
            //        .Union(allAopApps.Where(e => e.NDChecklistId.HasValue).Select(e => e.NDChecklistId.Value))
            //        .Union(allAopApps.Where(e => e.NDReportId.HasValue).Select(e => e.NDReportId.Value))
            //        .ToList();

            //    for (int i = 0; i < returnValue.Count; i++)
            //    {
            //        if (returnValue[i].DocId.HasValue &&
            //            aopAppDocIds.Contains(returnValue[i].DocId.Value))
            //        {
            //            returnValue.RemoveAt(i);
            //        }
            //    }
            //}

            docs = this.docRepository.GetDocs(
                      fromDate,
                      toDate,
                      regUri,
                      docName,
                      docTypeId,
                      docStatusId,
                      hideRead,
                      null,
                      corrs,
                      units,
                      ds,
                      limit,
                      offset,
                      docCasePartType,
                      readPermission,
                      unitUser,
                      out totalCount);

            List<int> loadedDocIds = docs.Select(e => e.DocId).ToList();

            var docHasReads = this.unitOfWork.DbContext.Set<DocHasRead>()
                .Where(e => e.UnitId == unitUser.UnitId && loadedDocIds.Contains(e.DocId)).ToList();

            List<DocListItemDO> returnValue = docs.Select(e => new DocListItemDO(e, unitUser)).ToList();

            foreach (var item in returnValue)
            {
                var docCorrespondents = this.unitOfWork.DbContext.Set<DocCorrespondent>()
                    .Include(e => e.Correspondent.CorrespondentType)
                    .Where(e => e.DocId == item.DocId)
                    .ToList();

                item.DocCorrespondents.AddRange(docCorrespondents.Select(e => new DocCorrespondentDO(e)).ToList());
            }

            StringBuilder sb = new StringBuilder();

            if (totalCount >= 10000)
            {
                sb.Append("Има повече от 10000 резултата, моля, въведете допълнителни филтри.");
            }

            return Ok(new
            {
                documents = returnValue,
                documentCount = totalCount,
                msg = sb.ToString()
            });
        }
        public void MigrateLicenceDocuments(
            ConcurrentQueue<int> personIds,
            Dictionary<int, int> personIdToLotId,
            Dictionary<int, IEnumerable<JObject>> personsLicences,
            CookieCollection cookies,
            //cancellation
            CancellationTokenSource cts,
            CancellationToken ct)
        {
            try
            {
                this.oracleConn.Open();
            }
            catch (Exception)
            {
                cts.Cancel();
                throw;
            }

            ct.ThrowIfCancellationRequested();
            using (var dependencies = this.dependencyFactory())
            {
                this.unitOfWork = dependencies.Value.Item1;
                this.lotRepository = dependencies.Value.Item2;
                var printRepository = dependencies.Value.Item3;
                this.lotEventDispatcher = dependencies.Value.Item4;
                this.userContext = dependencies.Value.Item5;

                string connectionString = ConfigurationManager.ConnectionStrings["DbContext"].ConnectionString;

                int personId = -1;
                try
                {
                    while (personIds.TryDequeue(out personId))
                    {
                        if (personIdToLotId.ContainsKey(personId))
                        {
                            var lot = lotRepository.GetLotIndex(personIdToLotId[personId], fullAccess: true);

                            JObject licence = null;
                            ConcurrentQueue<JObject> personLicences = new ConcurrentQueue<JObject>(personsLicences[personId]);

                            while (personLicences.TryDequeue(out licence))
                            {
                                string queryString = licence.Get<string>("query_string");
                                int oldId = licence.Get<int>("old_id");

                                int editionPartIndex = lot.Index.GetParts<dynamic>("licenceEditions")
                                    .Where(e => e.Content.__oldId == oldId)
                                    .Single().Part.Index;

                                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(queryString);
                                request.CookieContainer = new CookieContainer();
                                request.CookieContainer.Add(cookies);

                                using (HttpWebResponse httpResponse = (HttpWebResponse)request.GetResponse())
                                using (var responseStream = httpResponse.GetResponseStream())
                                using (var stream = printRepository.ConvertWordStreamToPdfStream(responseStream))
                                {
                                    var licenceEditionDocBlobKey = printRepository.SaveStreamToBlob(stream, connectionString);
                                    this.UpdateLicenceEdition(licenceEditionDocBlobKey, editionPartIndex, lot);
                                }
                            }
                            Console.WriteLine("Migrated printed licences of personId: {0}", personId);
                        }
                    }
                }
                catch (Exception)
                {
                    Console.WriteLine("Error in migration of printed licences of personId: {0}", personId);
                    cts.Cancel();
                    throw;
                }
            }
        }
Beispiel #20
0
 public IntegrationController(
     IDocRepository docRepository,
     IUnitOfWork unitOfWork,
     ILotRepository lotRepository,
     IPersonRepository personRepository,
     IApplicationRepository applicationRepository,
     ICaseTypeRepository caseTypeRepository,
     IIntegrationRepository integrationRepository,
     INomRepository nomRepository,
     ICorrespondentRepository correspondentRepository,
     IRioDocumentParser rioDocumentParser,
     UserContext userContext)
 {
     this.docRepository = docRepository;
     this.unitOfWork = unitOfWork;
     this.lotRepository = lotRepository;
     this.personRepository = personRepository;
     this.applicationRepository = applicationRepository;
     this.integrationRepository = integrationRepository;
     this.caseTypeRepository = caseTypeRepository;
     this.nomRepository = nomRepository;
     this.correspondentRepository = correspondentRepository;
     this.rioDocumentParser = rioDocumentParser;
     this.userContext = userContext;
 }
Beispiel #21
0
        public void UpdateLotCaseTypes(string set, GvaCaseType caseType, Lot lot, UserContext userContext)
        {
            Part updatedPart = null;
            if (set == "Person")
            {
                PersonDataDO personData = lot.Index.GetPart<PersonDataDO>("personData").Content;
                personData.CaseTypes.Add(caseType.GvaCaseTypeId);
                this.caseTypeRepository.AddCaseTypes(lot, personData.CaseTypes);
                updatedPart = lot.UpdatePart("personData", personData, userContext).Part;
            }
            else if (set == "Organization")
            {
                NomValue caseTypeNom = new NomValue()
                {
                    NomValueId = caseType.GvaCaseTypeId,
                    Name = caseType.Name,
                    Alias = caseType.Alias
                };

                OrganizationDataDO organizationData = lot.Index.GetPart<OrganizationDataDO>("organizationData").Content;
                organizationData.CaseTypes.Add(caseTypeNom);
                this.caseTypeRepository.AddCaseTypes(lot, organizationData.CaseTypes.Select(ct => ct.NomValueId));
                updatedPart = lot.UpdatePart("organizationData", organizationData, userContext).Part;
            }

            lot.Commit(userContext, this.lotEventDispatcher);

            this.unitOfWork.Save();

            this.lotRepository.ExecSpSetLotPartTokens(updatedPart.PartId);
        }