Exemplo n.º 1
0
        public static UserSurveyTask CreateTaskForResponse(this SurveyTargetCampaign campaign, SurveyResponse result)
        {
            var task = CreateTaskForResponse(campaign.As <SurveyCampaign>(), result);

            task.UserSurveyTaskAllowTargetEdit = false;
            return(task);
        }
Exemplo n.º 2
0
 public static IEnumerable <UserSurveyTask> Launch(this SurveyTargetCampaign campaign, DateTime?taskDueOn = null,
                                                   string taskName = null)
 {
     return(LaunchTargetCampaign(campaign, taskDueOn, taskName));
 }
Exemplo n.º 3
0
 public static SurveyResponse CreateSurveyResponse(this SurveyTargetCampaign campaign, Person recipient, UserResource targetObject = null)
 {
     return(CreateSurveyResponse(campaign.As <SurveyCampaign>(), recipient, targetObject));
 }
Exemplo n.º 4
0
        private static IEnumerable <UserSurveyTask> LaunchTargetCampaign(SurveyTargetCampaign campaign, DateTime?taskDueOn, string taskName)
        {
            var tasks = new List <UserSurveyTask>();

            if (campaign == null)
            {
                throw new ArgumentNullException(nameof(campaign));
            }

            var survey = campaign.SurveyForCampaign;

            if (survey == null)
            {
                throw new InvalidCampaignException("Survey target campaign must be part of an existing survey.");
            }

            if (!campaign.CampaignTargetTargets.Any())
            {
                //throw new InvalidCampaignException("Survey target campaign does not have any targets.");

                // Bug: #28737
                EventLog.Application.WriteWarning("Survey target campaign does not have any targets. Ignoring launch.");

                return(Enumerable.Empty <UserSurveyTask>());
            }

            if (campaign.CampaignTargetRelationship == null)
            {
                throw new InvalidCampaignException("Survey target campaign does not provide a relationship to survey taker.");
            }

            // relaunch is not permitted.
            if (campaign.CampaignIsLaunched == true)
            {
                throw new Exception("Campaign has already been launched.");
            }

            campaign = campaign.AsWritable <SurveyTargetCampaign>();
            campaign.CampaignIsLaunched = true;
            campaign.CampaignLaunchedOn = DateTime.UtcNow;

            foreach (var target in campaign.CampaignTargetTargets)
            {
                var direction = campaign.CampaignTargetRelationshipDirection_Enum == DirectionEnum_Enumeration.Reverse ? Direction.Reverse : Direction.Forward;

                var recipients = target.GetRelationships <Person>(new EntityRef(campaign.CampaignTargetRelationship), direction).ToList();
                foreach (var recipient in recipients)
                {
                    var result = campaign.CreateSurveyResponse(recipient, target);
                    campaign.SurveyResponses.Add(result);

                    var userSurveyTask = campaign.CreateTaskForResponse(result);

                    if (!string.IsNullOrWhiteSpace(taskName))
                    {
                        userSurveyTask.Name = taskName;
                    }

                    if (taskDueOn != null)
                    {
                        userSurveyTask.UserTaskDueOn = taskDueOn;
                    }

                    result.UserSurveyTaskForResults.Add(userSurveyTask);

                    tasks.Add(userSurveyTask);
                }
            }

            campaign.Save();

            return(tasks);
        }