public IActionResult Add(InvitedUserViewModel.InvitedUserListViewModel vm) { var userId = vm.SelectedToInviteUserId; var meetingId = vm.MeetingId; var meeting = _meetingRepository.GetMeeting(meetingId); var overlappingMeetings = new List <Meeting>(); overlappingMeetings = _meetingRepository.GetOverlappingMeetingsForUser(meeting.StartDateTime, meeting.EndDateTime, userId) .ToList(); // bozy This variable should be inside the if part. Moreover setting a variable with a single space is a code smell var overlappingMeetingsTitle = " "; if (overlappingMeetings.Count > 0) { // use string.Join() instead of foreach. foreach (var m in overlappingMeetings) { overlappingMeetingsTitle += m.Title + " "; } TempData["ErrorMessage"] = Constants.OverlappingMeetingsMessage + overlappingMeetingsTitle; return(RedirectToAction(nameof(List), new { id = meetingId })); } _invitedUserRepository.AddUserToMeeting(userId, meetingId, InvitationStatus.Pending); TempData["SuccessMessage"] = Constants.GeneralSuccessMessage; return(RedirectToAction(nameof(List), new { id = meetingId })); }
public async Task <IActionResult> Add(InvitedUserViewModel.InvitedUserListViewModel vm) { var userId = vm.SelectedToInviteUserId; var meetingId = vm.MeetingId; if (_invitedUserRepository.IfUserIsInvited(meetingId, userId)) { TempData["ErrorMessage"] = Constants.ExistingMeetingInvitationMessage; return(RedirectToAction(nameof(List), new { id = meetingId })); } var meeting = _meetingRepository.GetMeeting(meetingId); var user = _userManager.FindByIdAsync(userId).Result; var games = meeting.MeetingGame.Select(mg => mg.Game.Title); var meetingStartDate = ToolsExtensions .ConvertToTimeZoneFromUtc(meeting.StartDateTime, user.TimeZone, _logger) .ToString(Constants.DateTimeFormat, CultureInfo.InvariantCulture); var meetingEndDate = ToolsExtensions.ConvertToTimeZoneFromUtc(meeting.EndDateTime, user.TimeZone, _logger) .ToString(Constants.DateTimeFormat, CultureInfo.InvariantCulture); var overlappingMeetings = new List <string>(); overlappingMeetings = _meetingRepository .GetOverlappingMeetingsForUser(meeting.StartDateTime, meeting.EndDateTime, userId) .Select(m => m.Title) .ToList(); // bozy This variable should be inside the if part. Moreover setting a variable with a single space is a code smell if (overlappingMeetings.Count > 0) { // use string.Join() instead of foreach. var overlappingMeetingsTitle = string.Join(", ", overlappingMeetings); TempData["ErrorMessage"] = $"{Constants.OverlappingMeetingsMessage}: {overlappingMeetingsTitle}"; return(RedirectToAction(nameof(List), new { id = meetingId })); } _invitedUserRepository.AddUserToMeeting(userId, meetingId, InvitationStatus.Pending); TempData["SuccessMessage"] = Constants.GeneralSuccessMessage; var appLink = Url.Action(nameof(List), "InvitedUser", new { id = meetingId }, HttpContext.Request.Scheme); var content = $"{Constants.ContentInviteUserEmail}: Organizer: {meeting.Organizer.FullName}; Start date: {meetingStartDate}; End date: {meetingEndDate};" + $" Games: {string.Join(", ", games)}"; var response = await _templateSender.SendGeneralEmailAsync(new SendEmailDetails { IsHTML = true, ToEmail = user.Email, Subject = Constants.SubjectInviteUserEmail }, Constants.TitleInviteUserEmail, content, Constants.ButtonCheckMeeting, appLink); if (response.Successful) { return(RedirectToAction(nameof(List), new { id = meetingId })); } TempData["ErrorMessage"] = Constants.GeneralSendEmailErrorMessage; foreach (var error in response.Errors) { _logger.LogError(error); } return(RedirectToAction(nameof(List), new { id = meetingId })); }