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); }
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); }
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); }
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); }
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); } }
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 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); }
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); }
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); }
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); } }
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 }); }
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 }); }
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 }); }