/* ****************************************************************************
        *
        * Здесь имелся злоебучий баг: организации нихрена не добавлялись из-за
        * использования разных контекстов данных. То есть подгружали в одном,
        * пытались добавить в другом и снова загрузить в первом. Такая ебала не
        * прокатывает в EF, потому что на один объект не могут ссылаться несколько
        * интерфейсов IChangeEnitityTracker (два контекста в нашем случае).
        *
        * Решено следующим образом:
        * В конструкторе загружаем вообще все организации, а в фильтре организаций
        * херачим их из локального кэша.
        *
        * ****************************************************************************/

        #region Constructors

        public HighEducationDiplomaDocumentEditorViewModel(HighEducationDiplomaDocument document)
        {
            Session.DataModel.EducationOrganizations.Load();
            _doc     = document;
            Country  = Organization.Address.Country;
            Region   = Organization.Address.Region;
            District = Organization.Address.District;
            Locality = Organization.Address.Locality;
            Town     = Organization.Address.Town;
            OrgType  = Organization.EducationOrganizationType;
        }
Esempio n. 2
0
        void AddHighEducationDiplomaDocument()
        {
            var doc = new HighEducationDiplomaDocument();

            doc.EducationOrganization = Session.DataModel.EducationOrganizations.FirstOrDefault();
            if (DialogLayer.ShowEditor(EditingContent.EducationDocumentEditor,
                                       new HighEducationDiplomaDocumentEditorViewModel(doc)))
            {
                EditedClaim.HighEducationDiplomaDocuments.Add(doc);
                RaisePropertyChanged("HighEducationDiplomaDocuments");
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Отправляет заявление в архив и создает на его основе новое с такми же данными, но с опущенными номером
        /// заявления, условиями приёма, внутренними вступительными испытаниями.
        /// Также выставляет текущую дату регистрации заявления.
        /// </summary>
        /// <param name="existingClaim">Существующее заявление, отправляемое в архив</param>
        void CopyAndArchiveClaim()
        {
            var existingClaim = SelectedClaim;
            // Копируем текущие данные в новое заявление
            var newClaim = new Claim
            {
                RegistrationDate  = DateTime.Now,
                ClaimStatus       = existingClaim.ClaimStatus,
                IsHostelNeed      = existingClaim.IsHostelNeed,
                PersonalReturning = existingClaim.PersonalReturning
            };

            newClaim.ClaimStatus = existingClaim.ClaimStatus;

            // Документы о результатах ЕГЭ
            foreach (var egeDoc in existingClaim.EgeDocuments)
            {
                var newEgeDoc = new EgeDocument
                {
                    OriginalReceivedDate = egeDoc.OriginalReceivedDate,
                    Number = egeDoc.Number,
                    Date   = egeDoc.Date,
                    Year   = egeDoc.Year
                };

                // Сами результаты ЕГЭ
                foreach (var result in egeDoc.EgeResults)
                {
                    var newResult = new EgeResult
                    {
                        ExamSubject = result.ExamSubject,
                        Value       = result.Value,
                        IsChecked   = result.IsChecked
                    };

                    newEgeDoc.EgeResults.Add(newResult);
                }
                newClaim.EgeDocuments.Add(newEgeDoc);
            }

            // Индивидуальные достижения
            foreach (var individualAchievement in existingClaim.EntranceIndividualAchievements)
            {
                var newIndAch = new EntranceIndividualAchievement
                {
                    CampaignIndividualAchievement = individualAchievement.CampaignIndividualAchievement
                };
                newClaim.EntranceIndividualAchievements.Add(newIndAch);
            }

            // Документы об образовании
            // Аттестаты среднего образования
            foreach (var eduDoc in existingClaim.SchoolCertificateDocuments)
            {
                var newEduDoc = new SchoolCertificateDocument
                {
                    OriginalReceivedDate = eduDoc.OriginalReceivedDate,
                    Series                = eduDoc.Series,
                    Number                = eduDoc.Number,
                    Date                  = eduDoc.Date,
                    SubdivisionCode       = eduDoc.SubdivisionCode,
                    EducationOrganization = eduDoc.EducationOrganization,
                    FiveCount             = eduDoc.FiveCount,
                    FourCount             = eduDoc.FourCount,
                    ThreeCount            = eduDoc.ThreeCount
                };
                newClaim.SchoolCertificateDocuments.Add(newEduDoc);
            }

            // Дипломы СПО
            foreach (var eduDoc in existingClaim.MiddleEducationDiplomaDocuments)
            {
                var newEduDoc = new MiddleEducationDiplomaDocument
                {
                    OriginalReceivedDate = eduDoc.OriginalReceivedDate,
                    Series                = eduDoc.Series,
                    Number                = eduDoc.Number,
                    Date                  = eduDoc.Date,
                    SubdivisionCode       = eduDoc.SubdivisionCode,
                    EducationOrganization = eduDoc.EducationOrganization,
                    FiveCount             = eduDoc.FiveCount,
                    FourCount             = eduDoc.FourCount,
                    ThreeCount            = eduDoc.ThreeCount
                };
                newClaim.MiddleEducationDiplomaDocuments.Add(newEduDoc);
            }

            // Дипломы ВО
            foreach (var eduDoc in existingClaim.HighEducationDiplomaDocuments)
            {
                var newEduDoc = new HighEducationDiplomaDocument
                {
                    OriginalReceivedDate = eduDoc.OriginalReceivedDate,
                    Series                = eduDoc.Series,
                    Number                = eduDoc.Number,
                    Date                  = eduDoc.Date,
                    SubdivisionCode       = eduDoc.SubdivisionCode,
                    EducationOrganization = eduDoc.EducationOrganization,
                    FiveCount             = eduDoc.FiveCount,
                    FourCount             = eduDoc.FourCount,
                    ThreeCount            = eduDoc.ThreeCount
                };
                newClaim.HighEducationDiplomaDocuments.Add(newEduDoc);
            }

            // Документы
            // Документы, подтверждающие льготу
            foreach (var quotaDoc in existingClaim.OrphanDocuments)
            {
                var newQuotaDoc = new OrphanDocument
                {
                    OriginalReceivedDate = quotaDoc.OriginalReceivedDate,
                    OrphanDocumentType   = quotaDoc.OrphanDocumentType,
                    Series       = quotaDoc.Series,
                    Number       = quotaDoc.Number,
                    Date         = quotaDoc.Date,
                    Organization = quotaDoc.Organization
                };
                newClaim.OrphanDocuments.Add(newQuotaDoc);
            }

            // Другие истребуемые документы
            var oldOtherRequiredDoc = existingClaim.OtherRequiredDocuments.First();
            var newOtherRequiredDoc = new OtherRequiredDocument
            {
                Certificate        = oldOtherRequiredDoc.Certificate,
                Photos             = oldOtherRequiredDoc.Photos,
                MedicinePermission = oldOtherRequiredDoc.MedicinePermission,
                Fluorography       = oldOtherRequiredDoc.Fluorography
            };

            newClaim.OtherRequiredDocuments.Add(newOtherRequiredDoc);

            // Личные данные абитуриента
            var oldEntrant = existingClaim.Entrants.First();
            var newEntrant = new Entrant
            {
                LastName          = oldEntrant.LastName,
                FirstName         = oldEntrant.FirstName,
                Patronymic        = oldEntrant.Patronymic,
                Gender            = oldEntrant.Gender,
                CustomInformation = oldEntrant.CustomInformation,
                Email             = oldEntrant.Email,
                Address           = oldEntrant.Address,
                Phone             = oldEntrant.Phone,
                MobilePhone       = oldEntrant.MobilePhone,
                FatherName        = oldEntrant.FatherName,
                FatherPhone       = oldEntrant.FatherPhone,
                FatherJob         = oldEntrant.FatherJob,
                MotherName        = oldEntrant.MotherName,
                MotherPhone       = oldEntrant.MotherPhone,
                MotherJob         = oldEntrant.MotherJob,
                JobPost           = oldEntrant.JobPost,
                JobOrganization   = oldEntrant.JobOrganization,
                JobStage          = oldEntrant.JobStage,
                ForeignLanguage   = oldEntrant.ForeignLanguage
            };

            newClaim.Entrants.Add(newEntrant);

            // Документ, удостоверяющий личность
            foreach (var identityDoc in existingClaim.IdentityDocuments)
            {
                var newIdentityDoc = new IdentityDocument
                {
                    OriginalReceivedDate = identityDoc.OriginalReceivedDate,
                    Series               = identityDoc.Series,
                    Number               = identityDoc.Number,
                    Date                 = identityDoc.Date,
                    SubdivisionCode      = identityDoc.SubdivisionCode,
                    Organization         = identityDoc.Organization,
                    Citizenship          = identityDoc.Citizenship,
                    IdentityDocumentType = identityDoc.IdentityDocumentType,
                    BirthDate            = identityDoc.BirthDate,
                    BirthPlace           = identityDoc.BirthPlace
                };
                newClaim.IdentityDocuments.Add(newIdentityDoc);
            }

            Session.DataModel.Claims.Add(newClaim);

            // Открываем редактор нового заявления
            var vm        = new ClaimEditorViewModel(newClaim);
            var validator = new ClaimValidator(newClaim);

            if (DialogLayer.ShowEditor(EditingContent.ClaimEditor, vm, validator))
            {
                Session.DataModel.SaveChanges();

                // Производим возврат текущего заявления
                SendClaimToArchive();

                // Обновляем список заявлений
                Session.RefreshAll();
                RaisePropertyChanged("ClaimList");
            }
        }