예제 #1
0
 public ApplicationStageDO(GvaApplicationStage appStage)
 {
     this.Id = appStage.GvaAppStageId;
     this.StageId = appStage.GvaStage.GvaStageId;
     this.StageName = appStage.GvaStage.Name;
     this.Date = appStage.StartingDate;
     this.InspectorId = appStage.Inspector != null ? appStage.Inspector.LotId : (int?)null;
     this.InspectorName = appStage.Inspector != null ? appStage.Inspector.Person.Names : null;
     this.Ordinal = appStage.Ordinal;
     this.Note = appStage.Note;
 }
예제 #2
0
        public IHttpActionResult PostStampedDocuments(List<LicenceStageDO> stampedDocuments)
        {
            using (var transaction = this.unitOfWork.BeginTransaction())
            {
                foreach (LicenceStageDO document in stampedDocuments)
                {
                    if (document.ApplicationId.HasValue)
                    {
                        var applicationStages = this.applicationStageRepository.GetApplicationStages(document.ApplicationId.Value);
                        int lastStageOrdinal = applicationStages.Last().Ordinal;

                        var application = this.applicationRepository.GetApplicationById(document.ApplicationId.Value);
                        int? documentDuration = application.ApplicationType.TextContent.Get<int?>("duration");

                        List<string> newStagesAliases = this.unitOfWork.DbContext.Set<GvaStage>()
                                .Where(s => document.StageAliases.Contains(s.Alias))
                                .OrderBy(s => s.GvaStageId)
                                .Select(s => s.Alias)
                                .ToList();

                        foreach (string stageAlias in newStagesAliases)
                        {
                            var stage = this.unitOfWork.DbContext.Set<GvaStage>()
                                .Where(s => s.Alias.Equals(stageAlias))
                                .Single();

                            lastStageOrdinal++;
                            var stageTermDate = this.applicationStageRepository.GetApplicationTermDate(document.ApplicationId.Value, stage.GvaStageId);

                            GvaApplicationStage applicationStage = new GvaApplicationStage()
                            {
                                GvaStageId = stage.GvaStageId,
                                StartingDate = DateTime.Now,
                                Ordinal = lastStageOrdinal,
                                GvaApplicationId = document.ApplicationId.Value,
                                StageTermDate = stageTermDate
                            };

                            this.unitOfWork.DbContext.Set<GvaApplicationStage>().Add(applicationStage);
                        }
                    }
                    else
                    {
                        var lot = lotRepository.GetLotIndex(document.LotId.Value);
                        PartVersion<PersonLicenceEditionDO> licenceEditionPartVersion = lot.Index.GetPart<PersonLicenceEditionDO>(string.Format("licenceEditions/{0}", document.EditionPartIndex.Value));

                        licenceEditionPartVersion.Content.ОfficiallyReissuedStageId = this.unitOfWork.DbContext.Set<GvaStage>()
                            .Where(s => document.StageAliases.Contains(s.Alias))
                            .Max(s => s.GvaStageId);

                        lot.UpdatePart<PersonLicenceEditionDO>(string.Format("licenceEditions/{0}", licenceEditionPartVersion.Part.Index), licenceEditionPartVersion.Content, this.userContext);

                        lot.Commit(this.userContext, lotEventDispatcher);
                        this.lotRepository.ExecSpSetLotPartTokens(licenceEditionPartVersion.PartId);
                    }
                }

                this.unitOfWork.Save();

                transaction.Commit();
            }

            return Ok();
        }
예제 #3
0
        public IHttpActionResult PostNewApplicationStage(int appId, ApplicationStageDO appStage)
        {
            using (var transaction = this.unitOfWork.BeginTransaction())
            {
                var stageTermDate = this.applicationStageRepository.GetApplicationTermDate(appId, appStage.StageId);
                GvaStage gvaStage = this.unitOfWork.DbContext.Set<GvaStage>().Find(appStage.StageId);

                GvaApplicationStage stage = new GvaApplicationStage()
                {
                    GvaApplicationId = appId,
                    GvaStageId = gvaStage.GvaStageId,
                    StartingDate = appStage.Date,
                    InspectorLotId = appStage.InspectorId,
                    Ordinal = appStage.Ordinal,
                    Note = appStage.Note,
                    StageTermDate = stageTermDate
                };

                GvaApplicationStage applicationStage = this.unitOfWork.DbContext.Set<GvaApplicationStage>().Add(stage);

                this.unitOfWork.Save();

                transaction.Commit();

                return Ok(applicationStage);
            }
        }