/// <summary> /// Method for updating an existing activity - RS /// </summary> /// <param name="activityId"></param> /// <param name="updatedStaffActivity"></param> /// <param name="currentUser"></param> /// <returns></returns> public async Task <dynamic> UpdateActivityAsync(int activityId, StaffActivityAc updatedStaffActivityAc, ApplicationUser currentUser) { int currentUserInstituteId = await _instituteUserMappingHelperService.GetUserCurrentSelectedInstituteIdAsync(currentUser.Id, true); StaffActivity existingActivity = await _imsDbContext.StaffActivities.FirstOrDefaultAsync(x => x.Id == activityId && x.InstituteId == currentUserInstituteId); if (existingActivity == null) { return(new { Message = "No activity exists with this id", HasError = true }); } else if (await _imsDbContext.StaffActivities.AnyAsync(x => x.Id != activityId && x.InstituteId == currentUserInstituteId && x.Name.ToLowerInvariant().Equals(updatedStaffActivityAc.Name.ToLowerInvariant()) && x.StartDate == updatedStaffActivityAc.StartDate && x.EndDate == updatedStaffActivityAc.EndDate)) { return(new { Message = "Activity already exists with this name within the same date range", HasError = true }); } else { // Update activity existingActivity.Name = updatedStaffActivityAc.Name; existingActivity.Description = updatedStaffActivityAc.Description; existingActivity.StartDate = updatedStaffActivityAc.StartDate; existingActivity.EndDate = updatedStaffActivityAc.EndDate; existingActivity.IsActive = updatedStaffActivityAc.IsActive; existingActivity.MeetingAgendaId = updatedStaffActivityAc.MeetingAgendaId; existingActivity.ActivityStatusId = updatedStaffActivityAc.ActivityStatusId; existingActivity.StartTime = updatedStaffActivityAc.StartTime; existingActivity.EndTime = updatedStaffActivityAc.EndTime; existingActivity.Location = updatedStaffActivityAc.Location; _imsDbContext.StaffActivities.Update(existingActivity); await _imsDbContext.SaveChangesAsync(); // Update activity attendee List <ActivityAttendeeMapping> activityAttendeeMappingsList = await _imsDbContext.ActivityAttendeeMappings .Where(x => x.ActivityId == existingActivity.Id).ToListAsync(); _imsDbContext.ActivityAttendeeMappings.RemoveRange(activityAttendeeMappingsList); await _imsDbContext.SaveChangesAsync(); await AddActivityAttendeeAsync(existingActivity.Id, updatedStaffActivityAc.ActivityAttendeeList); // Add notification if (existingActivity.IsActive) { await AddNotificationsAsync(currentUserInstituteId, currentUser, updatedStaffActivityAc); } return(new { Message = "Activity updated successfully" }); } }
/// <summary> /// Method for adding new activity - RS /// </summary> /// <param name="newStaffActivity"></param> /// <param name="currentUser"></param> /// <returns></returns> public async Task <dynamic> AddActivityAsync(StaffActivityAc newStaffActivityAc, ApplicationUser currentUser) { int currentUserInstituteId = await _instituteUserMappingHelperService.GetUserCurrentSelectedInstituteIdAsync(currentUser.Id, true); if (await _imsDbContext.StaffActivities.AnyAsync(x => x.InstituteId == currentUserInstituteId && x.Name.ToLowerInvariant().Equals(newStaffActivityAc.Name.ToLowerInvariant()) && x.StartDate == newStaffActivityAc.StartDate && x.EndDate == newStaffActivityAc.EndDate)) { return(new { Message = "Activity already exists with this name within the same date range", HasError = true }); } else { // Add activity StaffActivity newStaffActivity = new StaffActivity { ActivityStatusId = newStaffActivityAc.ActivityStatusId, Description = newStaffActivityAc.Description, EndDate = newStaffActivityAc.EndDate, EndTime = newStaffActivityAc.EndTime, IsActive = newStaffActivityAc.IsActive, Location = newStaffActivityAc.Location, MeetingAgendaId = newStaffActivityAc.MeetingAgendaId, Name = newStaffActivityAc.Name, StartDate = newStaffActivityAc.StartDate, StartTime = newStaffActivityAc.StartTime, InstituteId = currentUserInstituteId, CreatedOn = DateTime.UtcNow }; _imsDbContext.StaffActivities.Add(newStaffActivity); await _imsDbContext.SaveChangesAsync(); // Add activity attendee await AddActivityAttendeeAsync(newStaffActivity.Id, newStaffActivityAc.ActivityAttendeeList); // Add notification if (newStaffActivity.IsActive) { await AddNotificationsAsync(currentUserInstituteId, currentUser, newStaffActivityAc); } return(new { Message = "Activity created successfully" }); } }
private void SetDefaultClickActions() { ClickAction = (viewModel, position) => StaffActivity.StartActivity(Context, viewModel.Model.Id, BaseAniDroidActivity.ObjectBrowseRequestCode); }
/// <summary> /// Method for fetching an activity by id - RS /// </summary> /// <param name="activityId"></param> /// <param name="currentUser"></param> /// <returns></returns> public async Task <StaffActivityAc> GetActivityByIdAsync(int activityId, ApplicationUser currentUser) { int currentUserInstituteId = await _instituteUserMappingHelperService.GetUserCurrentSelectedInstituteIdAsync(currentUser.Id, true); StaffActivity staffActivity = await _imsDbContext.StaffActivities .Include(x => x.MeetingAgenda) .Include(x => x.ActivityStatus) .Include(x => x.ActivityAttendeeMappings) .FirstOrDefaultAsync(x => x.Id == activityId && x.InstituteId == currentUserInstituteId); StaffActivityAc staffActivityAc = new StaffActivityAc { Id = staffActivity.Id, Name = staffActivity.Name, Description = staffActivity.Description, StartDate = staffActivity.StartDate, EndDate = staffActivity.EndDate, IsActive = staffActivity.IsActive, InstituteId = staffActivity.InstituteId, ActivityStatusId = staffActivity.ActivityStatusId, ActivityStatusName = staffActivity.ActivityStatus.Name, MeetingAgendaId = staffActivity.MeetingAgendaId, MeetingAgendaName = staffActivity.MeetingAgenda.Name, StartTime = staffActivity.StartTime, EndTime = staffActivity.EndTime, Location = staffActivity.Location, ActivityAttendeeList = new List <StaffActivityAttendeeMappingAc>() }; List <ApplicationUser> activityAttendeesList = await _imsDbContext.ActivityAttendeeMappings .Where(x => x.ActivityId == activityId) .Include(x => x.Attendee) .Select(x => x.Attendee) .ToListAsync(); List <StudentBasicInformation> studentBasicInformationList = await _imsDbContext.StudentBasicInformation.Where(x => x.InstituteId == currentUserInstituteId).ToListAsync(); List <StaffBasicPersonalInformation> staffBasicPersonalInformationList = await _imsDbContext.StaffBasicPersonalInformation.Where(x => x.InstituteId == currentUserInstituteId).ToListAsync(); foreach (ActivityAttendeeMapping activityAttendeeMapping in staffActivity.ActivityAttendeeMappings) { string attendeeName = activityAttendeesList.FirstOrDefault(x => x.Id == activityAttendeeMapping.AttendeeId)?.Name; if (activityAttendeeMapping.ActivityAttendeeType == ActivityAttendeeTypeEnum.Staff) { attendeeName = staffBasicPersonalInformationList.FirstOrDefault(x => x.UserId == activityAttendeeMapping.AttendeeId).FirstName; } else if (activityAttendeeMapping.ActivityAttendeeType == ActivityAttendeeTypeEnum.Student) { attendeeName = studentBasicInformationList.FirstOrDefault(x => x.UserId == activityAttendeeMapping.AttendeeId).FirstName; } staffActivityAc.ActivityAttendeeList.Add(new StaffActivityAttendeeMappingAc { ActivityId = staffActivity.Id, ActivityName = staffActivity.Name, ActivityAttendeeType = activityAttendeeMapping.ActivityAttendeeType, ActivityAttendeeTypeString = EnumHelperService.GetDescription(activityAttendeeMapping.ActivityAttendeeType), AttendeeId = activityAttendeeMapping.AttendeeId, AttendeeName = attendeeName }); } return(staffActivityAc); }