Esempio n. 1
0
        public int Handle(OrganizationEditCommand message)
        {
            var organization = _context
                               .Organizations
                               .Include(l => l.Location).ThenInclude(p => p.PostalCode)
                               .Include(tc => tc.OrganizationContacts)
                               .SingleOrDefault(t => t.Id == message.Organization.Id);

            if (organization == null)
            {
                organization = new Organization();
            }

            organization.Name    = message.Organization.Name;
            organization.LogoUrl = message.Organization.LogoUrl;
            organization.WebUrl  = message.Organization.WebUrl;

            organization          = organization.UpdateOrganizationContact(message.Organization, _context);
            organization.Location = organization.Location.UpdateModel(message.Organization.Location);

            if (organization.Location != null)
            {
                _context.Update(organization.Location);
            }

            organization.PrivacyPolicy = message.Organization.PrivacyPolicy;

            _context.Update(organization);
            _context.SaveChanges();

            return(organization.Id);
        }
Esempio n. 2
0
        public async Task <int> Handle(EditEventCommand message)
        {
            var campaignEvent = await GetEvent(message) ?? new Event();

            campaignEvent.Name        = message.Event.Name;
            campaignEvent.Description = message.Event.Description;
            campaignEvent.EventType   = message.Event.EventType;

            var timeZone            = TimeZoneInfo.FindSystemTimeZoneById(message.Event.TimeZoneId);
            var startDateTimeOffset = timeZone.GetUtcOffset(message.Event.StartDateTime);

            campaignEvent.StartDateTime = new DateTimeOffset(message.Event.StartDateTime.Year, message.Event.StartDateTime.Month, message.Event.StartDateTime.Day, message.Event.StartDateTime.Hour, message.Event.StartDateTime.Minute, 0, startDateTimeOffset);

            var endDateTimeOffset = timeZone.GetUtcOffset(message.Event.EndDateTime);

            campaignEvent.EndDateTime = new DateTimeOffset(message.Event.EndDateTime.Year, message.Event.EndDateTime.Month, message.Event.EndDateTime.Day, message.Event.EndDateTime.Hour, message.Event.EndDateTime.Minute, 0, endDateTimeOffset);
            campaignEvent.CampaignId  = message.Event.CampaignId;

            campaignEvent.ImageUrl = message.Event.ImageUrl;
            campaignEvent.NumberOfVolunteersRequired = message.Event.NumberOfVolunteersRequired;

            if (campaignEvent.IsLimitVolunteers != message.Event.IsLimitVolunteers || campaignEvent.IsAllowWaitList != message.Event.IsAllowWaitList)
            {
                campaignEvent.IsAllowWaitList   = message.Event.IsAllowWaitList;
                campaignEvent.IsLimitVolunteers = message.Event.IsLimitVolunteers;

                // cascade values to all tasks associated with this event
                foreach (var task in _context.Tasks.Where(task => task.Event.Id == campaignEvent.Id))
                {
                    task.IsLimitVolunteers = campaignEvent.IsLimitVolunteers;
                    task.IsAllowWaitList   = campaignEvent.IsAllowWaitList;
                    _context.Update(task);
                }
            }

            if (campaignEvent.Id > 0)
            {
                var skillsToRemove = _context.EventSkills.Where(skill => skill.EventId == campaignEvent.Id && (message.Event.RequiredSkills == null ||
                                                                                                               !message.Event.RequiredSkills.Any(ts1 => ts1.SkillId == skill.SkillId)));
                _context.EventSkills.RemoveRange(skillsToRemove);
            }

            if (message.Event.RequiredSkills != null)
            {
                campaignEvent.RequiredSkills.AddRange(message.Event.RequiredSkills.Where(mt => !campaignEvent.RequiredSkills.Any(ts => ts.SkillId == mt.SkillId)));
            }

            if (message.Event.Location != null)
            {
                campaignEvent.Location = campaignEvent.Location.UpdateModel(message.Event.Location);
                _context.Update(campaignEvent.Location);
            }

            campaignEvent.Headline = message.Event.Headline;

            _context.Update(campaignEvent);
            await _context.SaveChangesAsync().ConfigureAwait(false);

            return(campaignEvent.Id);
        }
Esempio n. 3
0
        public int Handle(EditActivityCommand message)
        {
            var activity = GetActivity(message);

            if (activity == null)
            {
                activity = new Activity();
            }

            activity.Name         = message.Activity.Name;
            activity.Description  = message.Activity.Description;
            activity.ActivityType = message.Activity.ActivityType;

            TimeZoneInfo timeZone            = TimeZoneInfo.FindSystemTimeZoneById(message.Activity.TimeZoneId);
            var          startDateTimeOffset = timeZone.GetUtcOffset(message.Activity.StartDateTime);

            activity.StartDateTime = new DateTimeOffset(message.Activity.StartDateTime.Year, message.Activity.StartDateTime.Month, message.Activity.StartDateTime.Day, message.Activity.StartDateTime.Hour, message.Activity.StartDateTime.Minute, 0, startDateTimeOffset);

            var endDateTimeOffset = timeZone.GetUtcOffset(message.Activity.EndDateTime);

            activity.EndDateTime = new DateTimeOffset(message.Activity.EndDateTime.Year, message.Activity.EndDateTime.Month, message.Activity.EndDateTime.Day, message.Activity.EndDateTime.Hour, message.Activity.EndDateTime.Minute, 0, endDateTimeOffset);
            activity.CampaignId  = message.Activity.CampaignId;

            activity.ImageUrl = message.Activity.ImageUrl;
            activity.NumberOfVolunteersRequired = message.Activity.NumberOfVolunteersRequired;

            if (activity.IsLimitVolunteers != message.Activity.IsLimitVolunteers || activity.IsAllowWaitList != message.Activity.IsAllowWaitList)
            {
                activity.IsAllowWaitList   = message.Activity.IsAllowWaitList;
                activity.IsLimitVolunteers = message.Activity.IsLimitVolunteers;

                // cascade values to all tasks associated with this activity
                foreach (var task in _context.Tasks.Where(task => task.Activity.Id == activity.Id))
                {
                    task.IsLimitVolunteers = activity.IsLimitVolunteers;
                    task.IsAllowWaitList   = activity.IsAllowWaitList;
                    _context.Update(task);
                }
            }

            if (activity.Id > 0)
            {
                var skillsToRemove = _context.ActivitySkills.Where(skill => skill.ActivityId == activity.Id && (message.Activity.RequiredSkills == null ||
                                                                                                                !message.Activity.RequiredSkills.Any(ts1 => ts1.SkillId == skill.SkillId)));
                _context.ActivitySkills.RemoveRange(skillsToRemove);
            }
            if (message.Activity.RequiredSkills != null)
            {
                activity.RequiredSkills.AddRange(message.Activity.RequiredSkills.Where(mt => !activity.RequiredSkills.Any(ts => ts.SkillId == mt.SkillId)));
            }
            if (message.Activity.Location != null)
            {
                activity.Location = activity.Location.UpdateModel(message.Activity.Location);
                _context.Update(activity.Location);
            }

            _context.Update(activity);
            _context.SaveChanges();
            return(activity.Id);
        }
Esempio n. 4
0
        public async Task <int> Handle(EditCampaignCommand message)
        {
            var campaign = await _context.Campaigns
                           .Include(l => l.Location)
                           .Include(tc => tc.CampaignContacts)
                           .Include(i => i.CampaignImpact)
                           .SingleOrDefaultAsync(c => c.Id == message.Campaign.Id)
                           .ConfigureAwait(false);

            if (campaign == null)
            {
                campaign = new Campaign();
            }

            campaign.Name            = message.Campaign.Name;
            campaign.Description     = message.Campaign.Description;
            campaign.FullDescription = message.Campaign.FullDescription;
            campaign.ExternalUrl     = message.Campaign.ExternalUrl;
            campaign.ExternalUrlText = message.Campaign.ExternalUrlText;

            campaign.TimeZoneId = message.Campaign.TimeZoneId;

            var timeZoneInfo        = TimeZoneInfo.FindSystemTimeZoneById(campaign.TimeZoneId);
            var startDateTimeOffset = timeZoneInfo.GetUtcOffset(message.Campaign.StartDate);

            campaign.StartDateTime = new DateTimeOffset(message.Campaign.StartDate.Year, message.Campaign.StartDate.Month, message.Campaign.StartDate.Day, 0, 0, 0, startDateTimeOffset);

            var endDateTimeOffset = timeZoneInfo.GetUtcOffset(message.Campaign.EndDate);

            campaign.EndDateTime = new DateTimeOffset(message.Campaign.EndDate.Year, message.Campaign.EndDate.Month, message.Campaign.EndDate.Day, 23, 59, 59, endDateTimeOffset);

            campaign.ManagingOrganizationId = message.Campaign.OrganizationId;
            campaign.ImageUrl = message.Campaign.ImageUrl;

            campaign = campaign.UpdateCampaignContact(message.Campaign, _context);
            campaign.CampaignImpact = campaign.CampaignImpact.UpdateModel(message.Campaign.CampaignImpact);
            campaign.Location       = campaign.Location.UpdateModel(message.Campaign.Location);

            campaign.Featured = message.Campaign.Featured;

            if (campaign.CampaignImpact != null)
            {
                _context.Update(campaign.CampaignImpact);
            }

            if (campaign.Location != null)
            {
                _context.Update(campaign.Location);
            }

            _context.Update(campaign);

            await _context.SaveChangesAsync().ConfigureAwait(false);

            return(campaign.Id);
        }
Esempio n. 5
0
        protected override async Task HandleCore(ActivitySignupCommand message)
        {
            var activitySignup = message.ActivitySignup;

            var user = await _context.Users
                       .Include(u => u.AssociatedSkills)
                       .SingleOrDefaultAsync(u => u.Id == activitySignup.UserId).ConfigureAwait(false);

            var activity = await _context.Activities
                           .Include(a => a.RequiredSkills)
                           .Include(a => a.UsersSignedUp).ThenInclude(u => u.User)
                           .SingleOrDefaultAsync(a => a.Id == activitySignup.ActivityId).ConfigureAwait(false);

            activity.UsersSignedUp = activity.UsersSignedUp ?? new List <ActivitySignup>();

            // If the user is already signed up for some reason, stop don't signup again, please
            if (!activity.UsersSignedUp.Any(acsu => acsu.User.Id == user.Id))
            {
                activity.UsersSignedUp.Add(new ActivitySignup
                {
                    Activity             = activity,
                    User                 = user,
                    PreferredEmail       = activitySignup.PreferredEmail,
                    PreferredPhoneNumber = activitySignup.PreferredPhoneNumber,
                    AdditionalInfo       = activitySignup.AdditionalInfo,
                    SignupDateTime       = DateTime.UtcNow
                });

                _context.Update(activity);

                //Add selected new skills (if any) to the current user
                if (activitySignup.AddSkillIds.Count > 0)
                {
                    var skillsToAdd = activity.RequiredSkills
                                      .Where(acsk => activitySignup.AddSkillIds.Contains(acsk.SkillId))
                                      .Select(acsk => new UserSkill()
                    {
                        SkillId = acsk.SkillId, UserId = user.Id
                    });
                    user.AssociatedSkills.AddRange(skillsToAdd.Where(toAdd => !user.AssociatedSkills.Any(existing => existing.SkillId == toAdd.SkillId)));

                    _context.Update(user);
                }

                await _context.SaveChangesAsync().ConfigureAwait(false);

                //Notify admins of a new volunteer
                await _mediator.PublishAsync(new VolunteerSignupNotification()
                {
                    ActivityId = activitySignup.ActivityId, UserId = activitySignup.UserId, TaskId = null
                })
                .ConfigureAwait(false);
            }
        }
Esempio n. 6
0
        public static Campaign UpdateCampaignContact(this Campaign campaign, IPrimaryContactModel contactModel, AllReadyContext _context)
        {
            if (campaign.CampaignContacts == null)
            {
                campaign.CampaignContacts = new List<CampaignContact>();
            }

            var primaryCampaignContact = campaign.CampaignContacts.SingleOrDefault(tc => tc.ContactType == (int)ContactTypes.Primary);
            var contactId = primaryCampaignContact?.ContactId;
            Contact primaryContact;

            var contactInfo = string.Concat(contactModel.PrimaryContactEmail?.Trim() + contactModel.PrimaryContactFirstName?.Trim(), contactModel.PrimaryContactLastName?.Trim(), contactModel.PrimaryContactPhoneNumber?.Trim());

            if (contactId == null)
            {
                primaryContact = new Contact();
            }
            else
            {
                primaryContact = _context.Contacts.Single(c => c.Id == contactId);
            }

            if (string.IsNullOrWhiteSpace(contactInfo) && primaryCampaignContact != null)
            {
                //Delete
                _context.CampaignContacts.Remove(primaryCampaignContact);
                _context.Remove(primaryCampaignContact);//Not Needed?
                _context.Remove(primaryCampaignContact.Contact);
            }
            else
            {
                primaryContact.Email = contactModel.PrimaryContactEmail;
                primaryContact.FirstName = contactModel.PrimaryContactFirstName;
                primaryContact.LastName = contactModel.PrimaryContactLastName;
                primaryContact.PhoneNumber = contactModel.PrimaryContactPhoneNumber;
                _context.Update(primaryContact);

                if (primaryCampaignContact == null)
                {
                    primaryCampaignContact = new CampaignContact
                    {
                        Contact = primaryContact,
                        Campaign = campaign,
                        ContactType = (int)ContactTypes.Primary
                    };
                    campaign.CampaignContacts.Add(primaryCampaignContact);
                    _context.Update(primaryCampaignContact);
                }
            }
            return campaign;
        }
Esempio n. 7
0
        public static Campaign UpdateCampaignContact(this Campaign campaign, IPrimaryContactModel contactModel, AllReadyContext _context)
        {
            if (campaign.CampaignContacts == null)
            {
                campaign.CampaignContacts = new List <CampaignContact>();
            }

            var     primaryCampaignContact = campaign.CampaignContacts.SingleOrDefault(tc => tc.ContactType == (int)ContactTypes.Primary);
            var     contactId = primaryCampaignContact?.ContactId;
            Contact primaryContact;

            var contactInfo = string.Concat(contactModel.PrimaryContactEmail?.Trim() + contactModel.PrimaryContactFirstName?.Trim(), contactModel.PrimaryContactLastName?.Trim(), contactModel.PrimaryContactPhoneNumber?.Trim());

            if (contactId == null)
            {
                primaryContact = new Contact();
            }
            else
            {
                primaryContact = _context.Contacts.Single(c => c.Id == contactId);
            }

            if (string.IsNullOrWhiteSpace(contactInfo) && primaryCampaignContact != null)
            {
                //Delete
                _context.CampaignContacts.Remove(primaryCampaignContact);
                _context.Remove(primaryCampaignContact);//Not Needed?
                _context.Remove(primaryCampaignContact.Contact);
            }
            else
            {
                primaryContact.Email       = contactModel.PrimaryContactEmail;
                primaryContact.FirstName   = contactModel.PrimaryContactFirstName;
                primaryContact.LastName    = contactModel.PrimaryContactLastName;
                primaryContact.PhoneNumber = contactModel.PrimaryContactPhoneNumber;
                _context.Update(primaryContact);

                if (primaryCampaignContact == null)
                {
                    primaryCampaignContact = new CampaignContact
                    {
                        Contact     = primaryContact,
                        Campaign    = campaign,
                        ContactType = (int)ContactTypes.Primary
                    };
                    campaign.CampaignContacts.Add(primaryCampaignContact);
                    _context.Update(primaryCampaignContact);
                }
            }
            return(campaign);
        }
        public async Task <int> Handle(EditTaskCommandAsync message)
        {
            var task = await _context.Tasks.Include(t => t.RequiredSkills).SingleOrDefaultAsync(t => t.Id == message.Task.Id);

            if (task == null)
            {
                task = new AllReadyTask();
            }

            task.Name         = message.Task.Name;
            task.Description  = message.Task.Description;
            task.Activity     = _context.Activities.SingleOrDefault(a => a.Id == message.Task.ActivityId);
            task.Organization = _context.Organizations.SingleOrDefault(t => t.Id == message.Task.OrganizationId);

            var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(message.Task.TimeZoneId);

            if (message.Task.StartDateTime.HasValue)
            {
                var startDateValue      = message.Task.StartDateTime.Value;
                var startDateTimeOffset = timeZoneInfo.GetUtcOffset(startDateValue);
                task.StartDateTime = new DateTimeOffset(startDateValue.Year, startDateValue.Month, startDateValue.Day, startDateValue.Hour, startDateValue.Minute, 0, startDateTimeOffset);
            }
            else
            {
                task.StartDateTime = null;
            }

            if (message.Task.EndDateTime.HasValue)
            {
                var endDateValue      = message.Task.EndDateTime.Value;
                var endDateTimeOffset = timeZoneInfo.GetUtcOffset(endDateValue);
                task.EndDateTime = new DateTimeOffset(endDateValue.Year, endDateValue.Month, endDateValue.Day, endDateValue.Hour, endDateValue.Minute, 0, endDateTimeOffset);
            }
            else
            {
                task.EndDateTime = null;
            }

            task.NumberOfVolunteersRequired = message.Task.NumberOfVolunteersRequired;
            task.IsLimitVolunteers          = task.Activity.IsLimitVolunteers;
            task.IsAllowWaitList            = task.Activity.IsAllowWaitList;

            if (task.Id > 0)
            {
                var tsToRemove = _context.TaskSkills
                                 .Where(ts => ts.TaskId == task.Id && (message.Task.RequiredSkills == null || !message.Task.RequiredSkills.Any(ts1 => ts1.SkillId == ts.SkillId)));
                _context.TaskSkills.RemoveRange(tsToRemove);
            }

            if (message.Task.RequiredSkills != null)
            {
                task.RequiredSkills.AddRange(message.Task.RequiredSkills.Where(mt => !task.RequiredSkills.Any(ts => ts.SkillId == mt.SkillId)));
            }

            _context.Update(task);

            await _context.SaveChangesAsync();

            return(task.Id);
        }
        public int Handle(OrganizationEditCommand message)
        {
            var org = _context
                      .Organizations
                      .Include(l => l.Location)
                      .Include(tc => tc.OrganizationContacts)
                      .SingleOrDefault(t => t.Id == message.Organization.Id) ?? new Organization();

            org.Name    = message.Organization.Name;
            org.LogoUrl = message.Organization.LogoUrl;
            org.WebUrl  = message.Organization.WebUrl;

            org.DescriptionHtml = message.Organization.Description;
            org.Summary         = message.Organization.Summary;

            org                     = org.UpdateOrganizationContact(message.Organization, _context);
            org.Location            = org.Location.UpdateModel(message.Organization.Location);
            org.Location.PostalCode = message.Organization.Location.PostalCode;

            org.PrivacyPolicy    = message.Organization.PrivacyPolicy;
            org.PrivacyPolicyUrl = message.Organization.PrivacyPolicyUrl;

            _context.Update(org);
            _context.SaveChanges();

            return(org.Id);
        }
Esempio n. 10
0
        public int Handle(OrganizationEditCommand message)
        {
            var organization = _context
                               .Organizations
                               .Include(l => l.Location).ThenInclude(p => p.PostalCode)
                               .Include(tc => tc.OrganizationContacts)
                               .SingleOrDefault(t => t.Id == message.Organization.Id);

            if (organization == null)
            {
                organization = new Organization();
            }

            organization.Name    = message.Organization.Name;
            organization.LogoUrl = message.Organization.LogoUrl;
            organization.WebUrl  = message.Organization.WebUrl;

            organization          = organization.UpdateOrganizationContact(message.Organization, _context);
            organization.Location = organization.Location.UpdateModel(message.Organization.Location);

            if (organization.Location != null)
            {
                if (!string.IsNullOrWhiteSpace(message.Organization.Location.PostalCode))
                {
                    PostalCodeGeo postalCode = _context.PostalCodes.SingleOrDefault(pc => pc.PostalCode.Equals(message.Organization.Location.PostalCode, System.StringComparison.InvariantCultureIgnoreCase));
                    if (postalCode == null)
                    {
                        postalCode = new PostalCodeGeo {
                            PostalCode = message.Organization.Location.PostalCode, City = message.Organization.Location.City, State = message.Organization.Location.State
                        };
                        _context.PostalCodes.Add(postalCode);
                    }
                    organization.Location.PostalCode = postalCode;
                }

                _context.Update(organization.Location);
            }

            organization.PrivacyPolicy = message.Organization.PrivacyPolicy;

            _context.Update(organization);
            _context.SaveChanges();

            return(organization.Id);
        }
Esempio n. 11
0
        public async Task <int> Handle(EditEventCommand message)
        {
            var campaignEvent = await GetEvent(message);

            if (campaignEvent == null)
            {
                campaignEvent = new Event();
                _context.Events.Add(campaignEvent);
            }

            campaignEvent.Name        = message.Event.Name;
            campaignEvent.Description = message.Event.Description;
            campaignEvent.EventType   = message.Event.EventType;

            campaignEvent.TimeZoneId    = message.Event.TimeZoneId;
            campaignEvent.StartDateTime = message.Event.StartDateTime;
            campaignEvent.EndDateTime   = message.Event.EndDateTime;

            campaignEvent.CampaignId = message.Event.CampaignId;

            campaignEvent.ImageUrl = message.Event.ImageUrl;

            if (campaignEvent.IsLimitVolunteers != message.Event.IsLimitVolunteers || campaignEvent.IsAllowWaitList != message.Event.IsAllowWaitList)
            {
                campaignEvent.IsAllowWaitList   = message.Event.IsAllowWaitList;
                campaignEvent.IsLimitVolunteers = message.Event.IsLimitVolunteers;

                // cascade values to all volunteerTasks associated with this event
                foreach (var volunteerTask in campaignEvent.VolunteerTasks)
                {
                    volunteerTask.IsLimitVolunteers = campaignEvent.IsLimitVolunteers;
                    volunteerTask.IsAllowWaitList   = campaignEvent.IsAllowWaitList;
                    _context.Update(volunteerTask);
                }
            }

            if (campaignEvent.Id > 0)
            {
                var skillsToRemove = _context.EventSkills.Where(skill => skill.EventId == campaignEvent.Id && (message.Event.RequiredSkills == null ||
                                                                                                               !message.Event.RequiredSkills.Any(ts1 => ts1.SkillId == skill.SkillId)));
                _context.EventSkills.RemoveRange(skillsToRemove);
            }

            if (message.Event.RequiredSkills != null)
            {
                campaignEvent.RequiredSkills.AddRange(message.Event.RequiredSkills.Where(mt => !campaignEvent.RequiredSkills.Any(ts => ts.SkillId == mt.SkillId)));
            }

            if (message.Event.Location != null)
            {
                campaignEvent.Location = campaignEvent.Location.UpdateModel(message.Event.Location);
            }
            campaignEvent.Headline = message.Event.Headline;
            await _context.SaveChangesAsync();

            return(campaignEvent.Id);
        }
        public int Handle(EditCampaignCommand message)
        {
            var campaign = _context.Campaigns
                           .Include(l => l.Location).ThenInclude(p => p.PostalCode)
                           .Include(tc => tc.CampaignContacts)
                           .Include(i => i.CampaignImpact)

                           .SingleOrDefault(c => c.Id == message.Campaign.Id);

            if (campaign == null)
            {
                campaign = new Campaign();
            }

            campaign.Name            = message.Campaign.Name;
            campaign.Description     = message.Campaign.Description;
            campaign.FullDescription = message.Campaign.FullDescription;
            campaign.TimeZoneId      = message.Campaign.TimeZoneId;
            TimeZoneInfo timeZoneInfo        = TimeZoneInfo.FindSystemTimeZoneById(campaign.TimeZoneId);
            var          startDateTimeOffset = timeZoneInfo.GetUtcOffset(message.Campaign.StartDate);

            campaign.StartDateTime = new DateTimeOffset(message.Campaign.StartDate.Year, message.Campaign.StartDate.Month, message.Campaign.StartDate.Day, 0, 0, 0, startDateTimeOffset);
            var endDateTimeOffset = timeZoneInfo.GetUtcOffset(message.Campaign.EndDate);

            campaign.EndDateTime            = new DateTimeOffset(message.Campaign.EndDate.Year, message.Campaign.EndDate.Month, message.Campaign.EndDate.Day, 23, 59, 59, endDateTimeOffset);
            campaign.ManagingOrganizationId = message.Campaign.OrganizationId;
            campaign.ImageUrl = message.Campaign.ImageUrl;

            campaign = campaign.UpdateCampaignContact(message.Campaign, _context);
            campaign.CampaignImpact = campaign.CampaignImpact.UpdateModel(message.Campaign.CampaignImpact);
            campaign.Location       = campaign.Location.UpdateModel(message.Campaign.Location);
            if (campaign.CampaignImpact != null)
            {
                _context.Update(campaign.CampaignImpact);
            }
            if (campaign.Location != null)
            {
                _context.Update(campaign.Location);
            }
            _context.Update(campaign);
            _context.SaveChanges();
            return(campaign.Id);
        }
Esempio n. 13
0
        protected override async Task HandleCore(LockUnlockCampaignCommand message)
        {
            var campaign = await _context.Campaigns.SingleOrDefaultAsync(c => c.Id == message.CampaignId).ConfigureAwait(false);

            if (campaign != null)
            {
                campaign.Locked = !campaign.Locked;

                _context.Update(campaign);
                await _context.SaveChangesAsync().ConfigureAwait(false);
            }
        }
        protected override void HandleCore(LockUnlockCampaignCommand message)
        {
            var campaign =
                _context.Campaigns.SingleOrDefault(c => c.Id == message.CampaignId);

            if (campaign != null)
            {
                campaign.Locked = !campaign.Locked;

                _context.Update(campaign);
                _context.SaveChanges();
            }
        }
        public int Handle(EditActivityCommand message)
        {
            var activity =
                _context.Activities
                .Include(a => a.RequiredSkills)
                .SingleOrDefault(c => c.Id == message.Activity.Id);

            if (activity == null)
            {
                activity = new Activity();
            }

            activity.Name        = message.Activity.Name;
            activity.Description = message.Activity.Description;

            TimeZoneInfo timeZone            = TimeZoneInfo.FindSystemTimeZoneById(message.Activity.TimeZoneId);
            var          startDateTimeOffset = timeZone.GetUtcOffset(message.Activity.StartDateTime);

            activity.StartDateTime = new DateTimeOffset(message.Activity.StartDateTime.Year, message.Activity.StartDateTime.Month, message.Activity.StartDateTime.Day, message.Activity.StartDateTime.Hour, message.Activity.StartDateTime.Minute, 0, startDateTimeOffset);

            var endDateTimeOffset = timeZone.GetUtcOffset(message.Activity.EndDateTime);

            activity.EndDateTime = new DateTimeOffset(message.Activity.EndDateTime.Year, message.Activity.EndDateTime.Month, message.Activity.EndDateTime.Day, message.Activity.EndDateTime.Hour, message.Activity.EndDateTime.Minute, 0, endDateTimeOffset);
            activity.CampaignId  = message.Activity.CampaignId;

            activity.ImageUrl = message.Activity.ImageUrl;
            activity.NumberOfVolunteersRequired = message.Activity.NumberOfVolunteersRequired;

            if (activity.Id > 0)
            {
                var skillsToRemove = _context.ActivitySkills.Where(skill => skill.ActivityId == activity.Id && (message.Activity.RequiredSkills == null ||
                                                                                                                !message.Activity.RequiredSkills.Any(ts1 => ts1.SkillId == skill.SkillId)));
                _context.ActivitySkills.RemoveRange(skillsToRemove);
            }
            if (message.Activity.RequiredSkills != null)
            {
                activity.RequiredSkills.AddRange(message.Activity.RequiredSkills.Where(mt => !activity.RequiredSkills.Any(ts => ts.SkillId == mt.SkillId)));
            }

            _context.Update(activity);
            _context.SaveChanges();
            return(activity.Id);
        }
        public async Task <int> Handle(EditItineraryCommand message)
        {
            try
            {
                var itinerary = await GetItinerary(message) ?? new Itinerary();

                itinerary.Name    = message.Itinerary.Name;
                itinerary.Date    = message.Itinerary.Date;
                itinerary.EventId = message.Itinerary.EventId;

                _context.Update(itinerary);
                await _context.SaveChangesAsync().ConfigureAwait(false);

                return(itinerary.Id);
            }
            catch (Exception ex)
            {
                // There was an error somewhere
                return(0);
            }
        }
Esempio n. 17
0
        public async Task <TaskSignupResult> Handle(TaskSignupCommandAsync message)
        {
            var model = message.TaskSignupModel;

            var user = await _context.Users
                       .Include(u => u.AssociatedSkills)
                       .SingleOrDefaultAsync(u => u.Id == model.UserId).ConfigureAwait(false);

            var campaignEvent = await _context.Events
                                .Include(a => a.RequiredSkills)
                                .Include(a => a.UsersSignedUp).ThenInclude(u => u.User)
                                .Include(a => a.Tasks).ThenInclude(t => t.RequiredSkills).ThenInclude(s => s.Skill)
                                .Include(a => a.Tasks).ThenInclude(t => t.AssignedVolunteers)
                                .SingleOrDefaultAsync(a => a.Id == model.EventId).ConfigureAwait(false);

            if (campaignEvent == null)
            {
                return(new TaskSignupResult {
                    Status = TaskSignupResult.FAILURE_EVENTNOTFOUND
                });
            }

            var task = campaignEvent.Tasks.SingleOrDefault(t => t.Id == model.TaskId);

            if (task == null)
            {
                return(new TaskSignupResult {
                    Status = TaskSignupResult.FAILURE_TASKNOTFOUND
                });
            }

            if (task.IsClosed)
            {
                return(new TaskSignupResult {
                    Status = TaskSignupResult.FAILURE_CLOSEDTASK
                });
            }

            campaignEvent.UsersSignedUp = campaignEvent.UsersSignedUp ?? new List <EventSignup>();

            // If the user has not already been signed up for the event, sign them up
            if (!campaignEvent.UsersSignedUp.Any(eventSignup => eventSignup.User.Id == user.Id))
            {
                campaignEvent.UsersSignedUp.Add(new EventSignup
                {
                    Event                = campaignEvent,
                    User                 = user,
                    PreferredEmail       = model.PreferredEmail,
                    PreferredPhoneNumber = model.PreferredPhoneNumber,
                    AdditionalInfo       = model.AdditionalInfo,
                    SignupDateTime       = DateTime.UtcNow
                });
            }

            // If somehow the user has already been signed up for the task, don't sign them up again
            if (!task.AssignedVolunteers.Any(taskSignup => taskSignup.User.Id == user.Id))
            {
                task.AssignedVolunteers.Add(new TaskSignup
                {
                    Task                 = task,
                    User                 = user,
                    Status               = TaskStatus.Accepted.ToString(),
                    StatusDateTimeUtc    = DateTime.UtcNow,
                    PreferredEmail       = model.PreferredEmail,
                    PreferredPhoneNumber = model.PreferredPhoneNumber,
                    AdditionalInfo       = model.AdditionalInfo
                });
            }

            //Add selected new skills (if any) to the current user
            if (model.AddSkillIds.Count > 0)
            {
                var skillsToAdd = task.RequiredSkills
                                  .Where(taskSkill => model.AddSkillIds.Contains(taskSkill.SkillId))
                                  .Select(taskSkill => new UserSkill {
                    SkillId = taskSkill.SkillId, UserId = user.Id
                });

                user.AssociatedSkills.AddRange(skillsToAdd.Where(skillToAdd => user.AssociatedSkills.All(userSkill => userSkill.SkillId != skillToAdd.SkillId)));

                _context.Update(user);
            }

            await _context.SaveChangesAsync().ConfigureAwait(false);

            //Notify admins of a new volunteer
            await _mediator.PublishAsync(new VolunteerSignupNotification { EventId = model.EventId, UserId = model.UserId, TaskId = task.Id })
            .ConfigureAwait(false);

            return(new TaskSignupResult {
                Status = "success", Task = task
            });
        }
Esempio n. 18
0
        public async Task <TaskSignupResult> Handle(TaskSignupCommand message)
        {
            var model = message.TaskSignupModel;

            var user = await _context.Users
                       .Include(u => u.AssociatedSkills)
                       .SingleOrDefaultAsync(u => u.Id == model.UserId);

            var @event = await _context.Events
                         .Include(a => a.RequiredSkills)
                         .Include(a => a.Tasks).ThenInclude(t => t.RequiredSkills).ThenInclude(s => s.Skill)
                         .Include(a => a.Tasks).ThenInclude(t => t.AssignedVolunteers).ThenInclude(t => t.User)
                         .SingleOrDefaultAsync(a => a.Id == model.EventId);

            if (@event == null)
            {
                return(new TaskSignupResult {
                    Status = TaskSignupResult.FAILURE_EVENTNOTFOUND
                });
            }

            var @task = @event.Tasks.SingleOrDefault(t => t.Id == model.TaskId);

            if (@task == null)
            {
                return(new TaskSignupResult {
                    Status = TaskSignupResult.FAILURE_TASKNOTFOUND
                });
            }

            if (@task.IsClosed)
            {
                return(new TaskSignupResult {
                    Status = TaskSignupResult.FAILURE_CLOSEDTASK
                });
            }

            // If somehow the user has already been signed up for the task, don't sign them up again
            if (@task.AssignedVolunteers.All(taskSignup => taskSignup.User.Id != user.Id))
            {
                @task.AssignedVolunteers.Add(new TaskSignup
                {
                    Task              = @task,
                    User              = user,
                    Status            = TaskStatus.Accepted.ToString(),
                    StatusDateTimeUtc = DateTimeUtcNow(),
                    AdditionalInfo    = model.AdditionalInfo
                });
            }

            //Add selected new skills (if any) to the current user
            if (model.AddSkillIds.Count > 0)
            {
                var skillsToAdd = @task.RequiredSkills
                                  .Where(taskSkill => model.AddSkillIds.Contains(taskSkill.SkillId))
                                  .Select(taskSkill => new UserSkill {
                    SkillId = taskSkill.SkillId, UserId = user.Id
                });

                user.AssociatedSkills.AddRange(skillsToAdd.Where(skillToAdd => user.AssociatedSkills.All(userSkill => userSkill.SkillId != skillToAdd.SkillId)));

                _context.Update(user);
            }

            await _context.SaveChangesAsync();

            //Notify admins of a new volunteer
            await _mediator.PublishAsync(new VolunteerSignedUpNotification { UserId = model.UserId, TaskId = @task.Id });

            return(new TaskSignupResult {
                Status = "success", Task = @task
            });
        }
Esempio n. 19
0
        public async Task <TaskSignupResult> Handle(TaskSignupCommand message)
        {
            var model = message.TaskSignupModel;
            var user  = _context.Users
                        .Include(u => u.AssociatedSkills)
                        .SingleOrDefault(u => u.Id == model.UserId);
            var activity = _context.Activities
                           .Include(a => a.RequiredSkills)
                           .Include(a => a.UsersSignedUp).ThenInclude(u => u.User)
                           .Include(a => a.Tasks).ThenInclude(t => t.RequiredSkills).ThenInclude(s => s.Skill)
                           .Include(a => a.Tasks).ThenInclude(t => t.AssignedVolunteers)
                           .SingleOrDefault(a => a.Id == model.ActivityId);
            var task = activity.Tasks
                       .SingleOrDefault(t => t.Id == model.TaskId);

            activity.UsersSignedUp = activity.UsersSignedUp ?? new List <ActivitySignup>();

            // If the user has not already been signed up for the activity, sign them up
            if (!activity.UsersSignedUp.Any(activitySignup => activitySignup.User.Id == user.Id))
            {
                activity.UsersSignedUp.Add(new ActivitySignup
                {
                    Activity             = activity,
                    User                 = user,
                    PreferredEmail       = model.PreferredEmail,
                    PreferredPhoneNumber = model.PreferredPhoneNumber,
                    AdditionalInfo       = model.AdditionalInfo,
                    SignupDateTime       = DateTime.UtcNow
                });
            }

            // If somehow the user has already been signed up for the task, don't sign them up again
            if (!task.AssignedVolunteers.Any(taskSignup => taskSignup.User.Id == user.Id))
            {
                task.AssignedVolunteers.Add(new TaskSignup
                {
                    Task                 = task,
                    User                 = user,
                    Status               = TaskStatus.Accepted.ToString(),
                    StatusDateTimeUtc    = DateTime.UtcNow,
                    PreferredEmail       = model.PreferredEmail,
                    PreferredPhoneNumber = model.PreferredPhoneNumber,
                    AdditionalInfo       = model.AdditionalInfo
                });
            }

            //Add selected new skills (if any) to the current user
            if (model.AddSkillIds.Count > 0)
            {
                var skillsToAdd = task.RequiredSkills
                                  .Where(taskSkill => model.AddSkillIds.Contains(taskSkill.SkillId))
                                  .Select(taskSkill => new UserSkill()
                {
                    SkillId = taskSkill.SkillId, UserId = user.Id
                });
                user.AssociatedSkills.AddRange(skillsToAdd.Where(skillToAdd => user.AssociatedSkills.All(userSkill => userSkill.SkillId != skillToAdd.SkillId)));

                _context.Update(user);
            }

            _context.SaveChanges();

            //Notify admins of a new volunteer
            await _bus.PublishAsync(new VolunteerSignupNotification()
            {
                ActivityId = model.ActivityId, UserId = model.UserId, TaskId = task.Id
            });

            return(new TaskSignupResult {
                Status = "success", Task = task
            });
        }