Exemplo n.º 1
0
        private bool CopyCampaignData()
        {
            if (!_blnAllowCampaignReload || !IsDirty)
            {
                return(true);
            }

            string[] populateCampaign = new string[] {
                "strCampaignName",
                "strCampaignID",
                "idfsCampaignType",
                "CampaignType"
            };

            if (!idfCampaign.HasValue)
            {
                return(true);
            }

            if (idfCampaign.Value == 0)
            {
                idfCampaign = null;
                foreach (var prop in populateCampaign)
                {
                    this.SetValue(prop, string.Empty);
                }
                return(true);
            }



            if (blnForceCampaignAssignment)
            {
                Diseases.ForEach(x => x.MarkToDelete());
            }

            using (DbManagerProxy manager = DbManagerFactory.Factory.Create(eidss.model.Core.EidssUserContext.Instance))
            {
                var acc = AsCampaign.Accessor.Instance(null);

                var campaign = CampaignInRamOnly;

                /*(CampaignInRamOnly == null || CampaignInRamOnly.idfCampaign != idfCampaign)
                 * ? (AsCampaign)acc.SelectByKey(manager, this.idfCampaign)
                 * : CampaignInRamOnly;*/


                if (campaign.idfsCampaignStatus != (long)AsCampaignStatus.Open)
                {
                    throw new ValidationModelException("msgCampaignIsNotOpen", "idfCampaign", "idfCampaign", new string[] { "Error" }, typeof(PredicateValidator), ValidationEventType.Error, this);
                }
                //validate Disease List

                if (!DateHelper.ValidateDateInRange(datStartDate, campaign.datCampaignDateStart, campaign.datCampaignDateEnd) ||
                    !DateHelper.ValidateDateInRange(datEndDate, campaign.datCampaignDateStart, campaign.datCampaignDateEnd))
                {
                    throw new ValidationModelException("msgCampaignSessionDatesConflict", "idfCampaign", "idfCampaign", new object[] { datStartDate, datEndDate, campaign.datCampaignDateStart, campaign.datCampaignDateEnd, "Error" }, typeof(PredicateValidator), ValidationEventType.Error, this);
                }

                if (!AsSession.ValidateCheckAnimalSampleList(this, campaign))
                {
                    throw new ValidationModelException("msgCampaignDoesntContainDiagnosis", "idfCampaign", "idfCampaign", new object[] { "Error" }, typeof(PredicateValidator), ValidationEventType.Error, this);
                }

                if (!AsSession.ValidateCheckToDeleteDiagnosis(this, campaign))
                {
                    throw new ValidationModelException("msgCampaignDoesntContainDiagnosis", "idfCampaign", "idfCampaign", new object[] { "Error" }, typeof(PredicateValidator), ValidationEventType.Error, this);
                }

                if (!AsSession.ValidateCampaignToSessionDiseasesRules(this, campaign))
                {
                    try
                    {
                        throw new ValidationModelException("AsSession_WrongCampaignAssignment", "idfCampaign", "idfCampaign", new string[] { "Confirmation" }, typeof(PredicateValidator), ValidationEventType.Question, this);
                    }
                    catch (ValidationModelException ex)
                    {
                        if (!OnValidation(ex))
                        {
                            throw;
                        }
                    }
                }


                /*if (!AsSession.ValidateCampaignToSessionDiseasesStrongRules(this, campaign))
                 * {
                 *  throw new ValidationModelException("AsSession_CampaignAssignmentError", "idfCampaign", "idfCampaign", new object[] { "Error" }, typeof(PredicateValidator), ValidationEventType.Error, this);
                 * }*/

                //this.CampaignInRamOnly = campaign;

                AsSession.CopyDiseasesFromCampaignToSession(manager, this, campaign);

                foreach (var prop in populateCampaign)
                {
                    if (campaign.GetValue(prop) != null)
                    {
                        this.SetValue(prop, campaign.GetValue(prop).ToString());
                    }
                }

                blnForceCampaignAssignment = false;
            }

            return(true);
        }