Beispiel #1
0
        internal static void LoadCampaigns()
        {
            PreloaderSystem.PrepareCampaigns();
            string campaign_root = Variables.CampaignsDataFolder();

            foreach (var campaign_directory in Directory.GetDirectories(campaign_root))
            {
                string          campaign_json = $"{campaign_directory}/campaign.json".NormPath(true);
                Models.Campaign campaign      = Models.Campaign.FromFile(campaign_json);
                if (campaign && campaign.Validate(campaign_directory))
                {
                    CampaignInfo campaign_info = new CampaignInfo(campaign_directory.NormPath(false), campaign);
                    foreach (var level in campaign.levels)
                    {
                        level.file = new FileInfo(Path.Combine(campaign_directory, level.file)).FullName;
                    }

                    foreach (var addon in campaign.addons)
                    {
                        addon.module = new FileInfo(Path.Combine(campaign_directory, addon.module)).FullName;
                        for (int i = 0; i < addon.dependencies.Count; i++)
                        {
                            addon.dependencies[i] = new FileInfo(Path.Combine(campaign_directory, addon.dependencies[i])).FullName;
                        }
                    }
                    AddonSystem.RegisterCampaign(campaign_info);
                    Campaigns.Add(campaign_info);
                }
            }
            AddonSystem.LoadAddons();
            LevelEditor.Initialize();
        }
Beispiel #2
0
        public async Task <IActionResult> AddCampaign(CampaignDto model)
        {
            //check if model state is not valid
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            //Create campaign object

            //Create facility object
            var programme = new Models.Campaign
            {
                Organization = model.Organization,
                Description  = model.Description,
                Location     = model.Location,
                EventDate    = model.EventDate,
                CreatedDate  = DateTime.Now
            };

            //save facility to database
            _db.Campaigns.Add(programme);
            if (await _db.SaveChangesAsync() > 0)
            {
                // CampaignSms("Donor Trace", "0242229571");
                return(Ok());                              // save operation successful
            }
            return(BadRequest("Could not save campaign")); // save operation failed
        }
Beispiel #3
0
        public CampaignViewModel(Models.Campaign campaign)
        {
            if (campaign == null)
            {
                return;
            }

            Id                       = campaign.Id;
            Name                     = campaign.Name;
            Description              = campaign.Description;
            FullDescription          = campaign.FullDescription;
            ExternalUrl              = campaign.ExternalUrl;
            ExternalUrlText          = campaign.ExternalUrlText;
            ManagingOrganizationName = campaign.ManagingOrganization?.Name ?? string.Empty;
            ManagingOrganizationId   = campaign.ManagingOrganization?.Id ?? 0;
            ManagingOrganizationLogo = campaign.ManagingOrganization?.LogoUrl ?? string.Empty;
            TimeZoneId               = campaign.TimeZoneId;
            StartDate                = campaign.StartDateTime;
            EndDate                  = campaign.EndDateTime;
            Events                   = campaign.Events != null?campaign.Events.ToViewModel() : Enumerable.Empty <EventViewModel>();

            CampaignGoals    = campaign.CampaignGoals;
            ImageUrl         = campaign.ImageUrl;
            HasPrivacyPolicy = !string.IsNullOrEmpty(campaign.ManagingOrganization?.PrivacyPolicy);
            PrivacyPolicyUrl = campaign.ManagingOrganization?.PrivacyPolicyUrl;
            Location         = campaign.Location;
            Featured         = campaign.Featured;
            Headline         = campaign.Headline;
            Published        = campaign.Published;
        }
Beispiel #4
0
        internal string postDBCampaign(Models.Campaign Newcampaign, string ConnString)
        {
            string retVal     = "";
            string connString = getConnectionString(ConnString);

            SqlConnection conn = new SqlConnection(connString);
            SqlCommand    cmnd = new SqlCommand();

            cmnd.Connection  = conn;
            cmnd.CommandType = CommandType.StoredProcedure;
            cmnd.CommandText = "zsp_insert_campaign";

            cmnd.Parameters.Add("@Campaign_ID", SqlDbType.VarChar).Value     = Newcampaign.Campaign_ID;
            cmnd.Parameters.Add("@Product_ID", SqlDbType.VarChar).Value      = Newcampaign.Product_ID;
            cmnd.Parameters.Add("@Campaign_Title", SqlDbType.VarChar).Value  = Newcampaign.Campaign_Title;
            cmnd.Parameters.Add("@Campaign_Type", SqlDbType.VarChar).Value   = Newcampaign.Campaign_Type;
            cmnd.Parameters.Add("@Campaign_Link", SqlDbType.VarChar).Value   = Newcampaign.Campaign_Link;
            cmnd.Parameters.Add("@Created_By", SqlDbType.VarChar).Value      = Newcampaign.Created_By;
            cmnd.Parameters.Add("@Campaign_Status", SqlDbType.VarChar).Value = Newcampaign.Campaign_Status;
            cmnd.Parameters.Add("@Start_Date", SqlDbType.DateTime).Value     = Newcampaign.Start_Date;
            cmnd.Parameters.Add("@End_Date", SqlDbType.DateTime).Value       = Newcampaign.End_Date;

            cmnd.Parameters.Add("@rErrorMsg", SqlDbType.VarChar, 255).Direction = ParameterDirection.Output;
            cmnd.Parameters.Add("@rErrorCode", SqlDbType.Int, 2).Direction      = ParameterDirection.Output;

            SqlDataReader dr;

            try
            {
                // Open the data connection
                cmnd.Connection = conn;
                conn.Open();

                // Execute the command
                dr = cmnd.ExecuteReader();

                /*while (dr.Read()) {
                 *  string rr      = dr["rr"].ToString();
                 *  i++;
                 * }*/

                /* Get the out parameters*/

                int retCode = int.Parse(cmnd.Parameters["@rErrorCode"].Value.ToString());
                if (retCode != 0)
                {
                    retVal = retCode + "|" + cmnd.Parameters["@rErrorMsg"].Value.ToString();
                }
            }
            catch (SqlException ex)
            {
                if (ex.Number != 0)
                {
                    retVal = ex.Number + "|" + ex.Message;
                }
            }

            return(retVal);
        }
        public void SetOrganizationIdAndOrganizationName_WhenConstructingWithNonNullCampaignAndNonNullManagingOrganization()
        {
            var campaign = new Models.Campaign { ManagingOrganization = new Organization { Id = 1, Name = "OrgName" }};
            var @event = new Models.Event { Campaign = campaign };
            var sut = new EventViewModel(@event);

            Assert.Equal(sut.OrganizationId, campaign.ManagingOrganization.Id);
            Assert.Equal(sut.OrganizationName, campaign.ManagingOrganization.Name);
        }
        public void SetCampaignIdCampaignNameAndTimeZoneId_WhenConstructingWithNonNullCampaign()
        {
            var campaign = new Models.Campaign { Id = 1, Name = "Campaignname", TimeZoneId = "CampaignTimeZoneId" };
            var @event = new Models.Event { Campaign = campaign };
            var sut = new EventViewModel(@event);

            Assert.Equal(sut.CampaignId, campaign.Id);
            Assert.Equal(sut.CampaignName, campaign.Name);
            Assert.Equal(sut.TimeZoneId, campaign.TimeZoneId);
        }
Beispiel #7
0
        public async void AddCampagne_Click(object sender, EventArgs e)
        {
            var newCampagne = new Models.Campaign();

            newCampagne.Name = inputName.Text;
            await campagneService.AddCampaign(newCampagne);

            inputName.Text = null;
            LoadCampagne();
        }
Beispiel #8
0
        public CampaignInfo(string data_dir, Models.Campaign data)
        {
            Data     = data;
            Location = data_dir.NormPath(false);
#if !LIMITED_COMPATIBILITY
            string logo_path = Path.Combine(Location, Data.logopath).NormPath(true);
            if (File.Exists(logo_path))
            {
                Logo = Utils.Common.LoadTexture(logo_path) as Texture2D;
            }
#endif
        }
Beispiel #9
0
        public CampaignViewModel With(Models.Campaign campaigns)
        {
            Name = campaigns.Name;

            Messages =
                new MessagesViewModel().With(campaigns.Messages).Using("Campaign", campaigns.CampaignId).ShowPostForm();

            Evts = new Dictionary <int, string>();

            Members = new Dictionary <int, string>();

            CampaignId = campaigns.CampaignId;

            foreach (Models.Event evt in campaigns.Events)
            {
                if (evt.Name.Length > 20)
                {
                    string summary = string.Format("{0}: {1} ...", evt.DateTime.ToShortDateString(),
                                                   evt.Name.Substring(0, 20));
                    Evts.Add(evt.EventId, summary);
                }
                else
                {
                    string summary = string.Format("{0}: {1}", evt.DateTime.ToShortDateString(), evt.Name);
                    Evts.Add(evt.EventId, summary);
                }
            }

            foreach (UserProfile mem in campaigns.Members)
            {
                if (mem.DisplayName.Length > 20)
                {
                    string summary = string.Format("{0} ...", mem.DisplayName.Substring(0, 20));
                    Members.Add(mem.UserId, summary);
                }
                else
                {
                    Members.Add(mem.UserId, mem.DisplayName);
                }
            }

            Description = campaigns.Description;

            CreateEventModel = new CreateEventViewModel {
                Ctrler = "Campaign", ObjId = campaigns.CampaignId
            };

            IsSubscribed = true;

            return(this);
        }
Beispiel #10
0
        public void SetCampaignIdCampaignNameAndTimeZoneId_WhenConstructingWithNonNullCampaign()
        {
            var campaign = new Models.Campaign {
                Id = 1, Name = "Campaignname", TimeZoneId = "CampaignTimeZoneId"
            };
            var @event = new Models.Event {
                Campaign = campaign, TimeZoneId = "EventTimeZoneId"
            };
            var sut = new EventViewModel(@event);

            Assert.Equal(sut.CampaignId, campaign.Id);
            Assert.Equal(sut.CampaignName, campaign.Name);
            Assert.Equal(sut.TimeZoneId, @event.TimeZoneId);
        }
Beispiel #11
0
        public void SetEventsToCampaignsEventsProjectedToEventViewModel_WhenCampaignsEventsIsNotNull()
        {
            var campaign = new Models.Campaign {
                Events = new List <Models.Event> {
                    new Models.Event {
                        Id = 1
                    }
                }
            };
            var eventViewModels = campaign.Events.ToViewModel();
            var sut             = new CampaignViewModel(campaign);

            Assert.Equal(sut.Events.First().Id, eventViewModels.First().Id);
        }
Beispiel #12
0
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Campaign = await _context.Campaigns.FirstOrDefaultAsync(m => m.Id == id);

            if (Campaign == null)
            {
                return(NotFound());
            }
            return(Page());
        }
Beispiel #13
0
        public void SetOrganizationIdAndOrganizationName_WhenConstructingWithNonNullCampaignAndNonNullManagingOrganization()
        {
            var campaign = new Models.Campaign {
                ManagingOrganization = new Organization {
                    Id = 1, Name = "OrgName"
                }
            };
            var @event = new Models.Event {
                Campaign = campaign
            };
            var sut = new EventViewModel(@event);

            Assert.Equal(sut.OrganizationId, campaign.ManagingOrganization.Id);
            Assert.Equal(sut.OrganizationName, campaign.ManagingOrganization.Name);
        }
Beispiel #14
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Campaign = await _context.Campaigns.FindAsync(id);

            if (Campaign != null)
            {
                _context.Campaigns.Remove(Campaign);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
        public void ConstructEventViewModel_WithTheCorrectData()
        {
            var campaign = new Models.Campaign { Id = 1, Name = "Campaignname", TimeZoneId = "CampaignTimeZoneId" };
            var location = new AllReady.ViewModels.Shared.LocationViewModel { City = "Amsterdam" };
            var skills = new List<SkillViewModel>() { new SkillViewModel { Name = "F sharp" } };
            var userSkills = new List<SkillViewModel> { new SkillViewModel { Name = "Medic", Description = "first aid helper", HierarchicalName = "med01", Id = 1 } };
            var signup =  new AllReady.ViewModels.Shared.TaskSignupViewModel() { Name = "task1", TaskId = 1 };
            var @event = new Models.Event { Campaign = campaign, TimeZoneId = "EventTimeZoneId" };
           
            var sut = new EventViewModel(@event);
            var task = new TaskViewModel { CampaignName = sut.CampaignName, CampaignId = sut.CampaignId, eventName = sut.Title, Name = "tasks" };
            var tasks = new List<TaskViewModel> { task };
          
            sut.Description = "Testing the allReady from htbox";
            sut.EndDateTime = DateTimeOffset.Now.AddDays(3650);
            sut.EventType = EventType.Rally;
            sut.HasPrivacyPolicy = false;
            sut.Headline = "the Already test campaing";
            sut.Id = 1;
            sut.ImageUrl = "http://www.htbox.org/";
            sut.IsAllowWaitList = false;
            sut.IsClosed = false;
            sut.IsLimitVolunteers = true;
            sut.Location = location;
            sut.OrganizationId = 1;
            sut.OrganizationName = "TestOrg";
            sut.RequiredSkills = skills;
            sut.SignupModel = signup;
            sut.StartDateTime = DateTimeOffset.Now.AddDays(365);
            sut.Tasks = tasks;
            sut.TimeZoneId = "US Mountain Standard Time";
            sut.Title = "Test Event";
            sut.UserId = "99";
            sut.UserSkills = userSkills;
            sut.UserTasks = tasks;

            Assert.Equal(sut.CampaignId, campaign.Id);
            Assert.Equal(sut.CampaignName, campaign.Name);
            Assert.Equal(sut.Location, location);
            Assert.Equal(sut.UserSkills, userSkills);
            Assert.Equal(sut.UserTasks, tasks);
            Assert.Equal(sut.SignupModel, signup);
            Assert.Equal(sut.RequiredSkills, skills);
        }
Beispiel #16
0
 public static CampaignViewModel ToViewModel(this Models.Campaign campaign)
 {
     return(new CampaignViewModel(campaign));
 }
 public void SetEventsToCampaignsEventsProjectedToEventViewModel_WhenCampaignsEventsIsNotNull()
 {
     var campaign = new Models.Campaign { Events = new List<Models.Event> { new Models.Event { Id = 1} }};
     var eventViewModels = campaign.Events.ToViewModel();
     var sut = new CampaignViewModel(campaign);
     Assert.Equal(sut.Events.First().Id, eventViewModels.First().Id);
 }
Beispiel #18
0
        public static async Task <bool> SendAnnouncement(Models.Campaign campaign)
        {
            int duplicateUsers = 0;
            var serviceURL     = campaign.Recipients.ServiceUrl;
            var tenantId       = campaign.Recipients.TenantId;
            var owner          = await Cache.Users.GetItemAsync(campaign.OwnerId);

            var taskList             = new List <Task>();
            var usersToNotify        = new ConcurrentBag <PersonalMessageRecipients>();
            var appNotInstalledUsers = new List <string>();

            foreach (var group in campaign.Recipients.Groups)
            {
                //foreach (var recipient in group.Users)
                await Common.ForEachAsync(group.Users, ApplicationSettings.NoOfParallelTasks,
                                          async recipient =>
                {
                    var user = await Cache.Users.GetItemAsync(recipient.Id);
                    if (user == null)
                    {
                        recipient.FailureMessage = "App not installed";
                        appNotInstalledUsers.Add(recipient.Id);
                    }
                    else
                    {
                        if (usersToNotify.Any(g => g.RecipientDetails.Id == recipient.Id))
                        {
                            // Remove check for temporary
                            recipient.FailureMessage = "Duplicated. Message already sent.";
                            duplicateUsers++;
                            // continue;
                            return;
                        }
                        else
                        {
                            usersToNotify.Add(new PersonalMessageRecipients()
                            {
                                GroupId          = group.GroupId,
                                UserDetails      = user,
                                RecipientDetails = recipient
                            });
                        }
                    }
                });
            }

            if (appNotInstalledUsers.Count > 0)
            {
                await ProactiveMessageHelper.SendPersonalNotification(serviceURL, tenantId, owner, $"App not installed by {appNotInstalledUsers.Count} users.", null);
            }

            if (usersToNotify.Count > 100)
            {
                await ProactiveMessageHelper.SendPersonalNotification(serviceURL, tenantId, owner, $"We are sending this message to {usersToNotify.Count} which may take some time. Will notify you once process is completed.", null);
            }

            var messageSendResults = new ConcurrentBag <NotificationSendStatus>();
            await Common.ForEachAsync(usersToNotify, ApplicationSettings.NoOfParallelTasks,
                                      async recipient =>
            {
                var user         = recipient.UserDetails;
                var card         = campaign.GetPreviewCard().ToAttachment();
                var campaignCard = CardHelper.GetCardWithAcknowledgementDetails(card, campaign.Id, user.Id, recipient.GroupId);
                var result       = await ProactiveMessageHelper.SendPersonalNotification(serviceURL, tenantId, user, null, card);
                result.Name      = user.Name; // Addd name of use for reporting.
                if (result.IsSuccessful)
                {
                    recipient.RecipientDetails.MessageId = result.MessageId;
                }
                else
                {
                    recipient.RecipientDetails.FailureMessage = result.FailureMessage;
                }
                messageSendResults.Add(result);
            });

            await Common.ForEachAsync(campaign.Recipients.Channels, ApplicationSettings.NoOfParallelTasks,
                                      async recipient =>
            {
                var team = await Cache.Teams.GetItemAsync(recipient.TeamId);
                if (team == null)
                {
                    recipient.Channel.FailureMessage = "App not installed";
                    messageSendResults.Add(new NotificationSendStatus()
                    {
                        IsSuccessful   = false,
                        FailureMessage = "App not installed",
                        Name           = recipient.Channel.Id
                    });
                }
                else
                {
                    var botAccount   = new ChannelAccount(ApplicationSettings.AppId);
                    var card         = campaign.GetPreviewCard().ToAttachment();
                    var campaignCard = CardHelper.GetCardWithoutAcknowledgementAction(card);

                    var result  = await ProactiveMessageHelper.SendChannelNotification(botAccount, serviceURL, recipient.Channel.Id, null, card);
                    result.Name = team.Name;
                    if (result.IsSuccessful)
                    {
                        recipient.Channel.MessageId = result.MessageId;
                    }
                    else
                    {
                        recipient.Channel.FailureMessage = result.FailureMessage;
                    }
                    messageSendResults.Add(result);
                }
            });

            var failedUsers  = string.Join(",", messageSendResults.Where(m => !m.IsSuccessful).Select(m => m.Name).ToArray());
            var successCount = messageSendResults.Count(m => m.IsSuccessful);

            await ProactiveMessageHelper.SendPersonalNotification(serviceURL, tenantId, owner,
                                                                  $"Process completed. Success: {successCount}. " +
                                                                  $"Failure: {messageSendResults.Count - successCount }. Duplicate: {duplicateUsers}", null);

            campaign.Status = Status.Sent;
            await Cache.Announcements.AddOrUpdateItemAsync(campaign.Id, campaign);

            return(true);
        }
Beispiel #19
0
        public static async Task SendAnnouncement(Models.Campaign campaign)
        {
            var card = campaign.GetPreviewCard().ToAttachment();

            int           successCount   = 0;
            int           failureCount   = 0;
            int           duplicateUsers = 0;
            List <string> notifiedUsers  = new List <string>();
            var           ownerId        = (await Cache.Users.GetItemAsync(campaign.OwnerId)).BotConversationId;

            foreach (var group in campaign.Recipients.Groups)
            {
                foreach (var recipient in group.Users)
                {
                    var user = await Cache.Users.GetItemAsync(recipient.Id);

                    if (user == null)
                    {
                        recipient.FailureMessage = "App not installed";
                        failureCount++;
                        await ProactiveMessageHelper.SendNotification(campaign.Recipients.ServiceUrl, campaign.Recipients.TenantId, ownerId, "App not installed by " + recipient.Id, null);
                    }
                    else
                    {
                        if (notifiedUsers.Contains(recipient.Id))
                        {
                            recipient.FailureMessage = "Duplicated. Message already sent.";
                            duplicateUsers++;
                            continue;
                        }

                        var campaignCard = CardHelper.GetCardWithAcknowledgementDetails(card, campaign.Id, user.Id, group.GroupId);
                        var response     = await ProactiveMessageHelper.SendNotification(campaign.Recipients.ServiceUrl, campaign.Recipients.TenantId, user.BotConversationId, null, card);

                        if (response.IsSuccessful)
                        {
                            recipient.MessageId = response.MessageId;
                            successCount++;
                            notifiedUsers.Add(recipient.Id);
                        }
                        else
                        {
                            recipient.FailureMessage = response.FailureMessage;
                            failureCount++;
                            await ProactiveMessageHelper.SendNotification(campaign.Recipients.ServiceUrl, campaign.Recipients.TenantId, ownerId, $"User: {user.Name}. Error: " + recipient.FailureMessage, null);
                        }
                    }
                }
            }

            var botAccount = new ChannelAccount(ApplicationSettings.AppId);

            foreach (var recipient in campaign.Recipients.Channels)
            {
                var team = await Cache.Teams.GetItemAsync(recipient.TeamId);

                if (team == null)
                {
                    recipient.Channel.FailureMessage = "App not installed";
                    failureCount++;
                    await ProactiveMessageHelper.SendNotification(campaign.Recipients.ServiceUrl, campaign.Recipients.TenantId, ownerId, "App not installed in team: " + recipient.TeamId, null);
                }
                else
                {
                    var campaignCard = CardHelper.GetCardWithoutAcknowledgementAction(card);

                    if (notifiedUsers.Contains(recipient.Channel.Id))
                    {
                        recipient.Channel.FailureMessage = "Duplicated. Message already sent.";
                        duplicateUsers++;
                        continue;
                    }

                    var response = await ProactiveMessageHelper.SendChannelNotification(botAccount, campaign.Recipients.ServiceUrl, recipient.Channel.Id, null, card);

                    if (response.IsSuccessful)
                    {
                        recipient.Channel.MessageId = response.MessageId;
                        successCount++;
                        notifiedUsers.Add(recipient.Channel.Id);
                    }
                    else
                    {
                        recipient.Channel.FailureMessage = response.FailureMessage;
                        failureCount++;
                        await ProactiveMessageHelper.SendNotification(campaign.Recipients.ServiceUrl, campaign.Recipients.TenantId, ownerId, $"Team: {team.Name}. Error: " + recipient.Channel.FailureMessage, null);;
                    }
                }
            }

            await ProactiveMessageHelper.SendNotification(campaign.Recipients.ServiceUrl, campaign.Recipients.TenantId, ownerId,
                                                          $"Process completed. Successful: {successCount}. Failure: {failureCount}. Duplicate: {duplicateUsers}", null);

            campaign.Status = Models.Status.Sent;
            await Cache.Announcements.AddOrUpdateItemAsync(campaign.Id, campaign);
        }
Beispiel #20
0
        public void ConstructEventViewModel_WithTheCorrectData()
        {
            var campaign = new Models.Campaign {
                Id = 1, Name = "Campaignname", TimeZoneId = "CampaignTimeZoneId"
            };
            var location = new AllReady.ViewModels.Shared.LocationViewModel {
                City = "Amsterdam"
            };
            var skills = new List <SkillViewModel>()
            {
                new SkillViewModel {
                    Name = "F sharp"
                }
            };
            var userSkills = new List <SkillViewModel> {
                new SkillViewModel {
                    Name = "Medic", Description = "first aid helper", HierarchicalName = "med01", Id = 1
                }
            };
            var signup = new AllReady.ViewModels.Shared.TaskSignupViewModel()
            {
                Name = "task1", TaskId = 1
            };
            var @event = new Models.Event {
                Campaign = campaign, TimeZoneId = "EventTimeZoneId"
            };

            var sut  = new EventViewModel(@event);
            var task = new TaskViewModel {
                CampaignName = sut.CampaignName, CampaignId = sut.CampaignId, eventName = sut.Title, Name = "tasks"
            };
            var tasks = new List <TaskViewModel> {
                task
            };

            sut.Description      = "Testing the allReady from htbox";
            sut.EndDateTime      = DateTimeOffset.Now.AddDays(3650);
            sut.EventType        = EventType.Rally;
            sut.HasPrivacyPolicy = false;
            sut.Headline         = "the Already test campaing";
            sut.Id                = 1;
            sut.ImageUrl          = "http://www.htbox.org/";
            sut.IsAllowWaitList   = false;
            sut.IsClosed          = false;
            sut.IsLimitVolunteers = true;
            sut.Location          = location;
            sut.OrganizationId    = 1;
            sut.OrganizationName  = "TestOrg";
            sut.RequiredSkills    = skills;
            sut.SignupModel       = signup;
            sut.StartDateTime     = DateTimeOffset.Now.AddDays(365);
            sut.Tasks             = tasks;
            sut.TimeZoneId        = "US Mountain Standard Time";
            sut.Title             = "Test Event";
            sut.UserId            = "99";
            sut.UserSkills        = userSkills;
            sut.UserTasks         = tasks;

            Assert.Equal(sut.CampaignId, campaign.Id);
            Assert.Equal(sut.CampaignName, campaign.Name);
            Assert.Equal(sut.Location, location);
            Assert.Equal(sut.UserSkills, userSkills);
            Assert.Equal(sut.UserTasks, tasks);
            Assert.Equal(sut.SignupModel, signup);
            Assert.Equal(sut.RequiredSkills, skills);
        }