public WorkshopDisplay(Workshop workshop) { Id = workshop.WorkshopID; Name = workshop.Name; if (!workshop.ManagerReference.IsLoaded) workshop.ManagerReference.Load(); Manager = new UserDisplay(workshop.Manager); if(!workshop.Users.IsLoaded) workshop.Users.Load(); MemberCount = workshop.Users.Count; }
/// <summary> /// Invites a user /// </summary> /// <param name="userSave"></param> /// <returns></returns> /// <remarks> /// This will email the user an invite and generate a token that will be validated in the email /// </remarks> public async Task <UserDisplay> PostInviteUser(UserInvite userSave) { if (userSave == null) { throw new ArgumentNullException("userSave"); } if (userSave.Message.IsNullOrWhiteSpace()) { ModelState.AddModelError("Message", "Message cannot be empty"); } if (ModelState.IsValid == false) { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } IUser user; if (Current.Configs.Settings().Security.UsernameIsEmail) { //ensure it's the same userSave.Username = userSave.Email; } else { //first validate the username if we're showing it user = CheckUniqueUsername(userSave.Username, u => u.LastLoginDate != default || u.EmailConfirmedDate.HasValue); } user = CheckUniqueEmail(userSave.Email, u => u.LastLoginDate != default || u.EmailConfirmedDate.HasValue); var userMgr = TryGetOwinContext().Result.GetBackOfficeUserManager(); if (!EmailSender.CanSendRequiredEmail && !userMgr.HasSendingUserInviteEventHandler) { throw new HttpResponseException( Request.CreateNotificationValidationErrorResponse("No Email server is configured")); } //Perform authorization here to see if the current user can actually save this user with the info being requested var authHelper = new UserEditorAuthorizationHelper(Services.ContentService, Services.MediaService, Services.UserService, Services.EntityService); var canSaveUser = authHelper.IsAuthorized(Security.CurrentUser, user, null, null, userSave.UserGroups); if (canSaveUser == false) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.Unauthorized, canSaveUser.Result)); } if (user == null) { //we want to create the user with the UserManager, this ensures the 'empty' (special) password //format is applied without us having to duplicate that logic var identityUser = BackOfficeIdentityUser.CreateNew(userSave.Username, userSave.Email, GlobalSettings.DefaultUILanguage); identityUser.Name = userSave.Name; var created = await UserManager.CreateAsync(identityUser); if (created.Succeeded == false) { throw new HttpResponseException( Request.CreateNotificationValidationErrorResponse(string.Join(", ", created.Errors))); } //now re-look the user back up user = Services.UserService.GetByEmail(userSave.Email); } //map the save info over onto the user user = Mapper.Map(userSave, user); //ensure the invited date is set user.InvitedDate = DateTime.Now; //Save the updated user (which will process the user groups too) Services.UserService.Save(user); var display = Mapper.Map <UserDisplay>(user); var inviteArgs = new UserInviteEventArgs( Request.TryGetHttpContext().Result.GetCurrentRequestIpAddress(), performingUser: Security.GetUserId().Result, userSave, user); try { userMgr.RaiseSendingUserInvite(inviteArgs); } catch (Exception ex) { Logger.Error <UsersController>(ex, "An error occurred in a custom event handler while inviting the user"); throw new HttpResponseException( Request.CreateNotificationValidationErrorResponse($"An error occurred inviting the user (check logs for more info): {ex.Message}")); } // If the event is handled then no need to send the email if (inviteArgs.InviteHandled) { // if no user result was created then map the minimum args manually for the UI if (!inviteArgs.ShowUserResult) { display = new UserDisplay { Name = userSave.Name, Email = userSave.Email, Username = userSave.Username }; } } else { //send the email await SendUserInviteEmailAsync(display, Security.CurrentUser.Name, Security.CurrentUser.Email, user, userSave.Message); } display.AddSuccessNotification(Services.TextService.Localize("speechBubbles/resendInviteHeader"), Services.TextService.Localize("speechBubbles/resendInviteSuccess", new[] { user.Name })); return(display); }
public ActionResult AdapPortal() { //* * * OT 3-18-16 //create instance of the "base" Adap controller to reference its shared functions //these functions should be moved to adap domain so AdapController won't need to be referenced here AdapController adapCtrl = new AdapController(formsRepo); adapCtrl.ControllerContext = ControllerContext; String userId = Request["userId"]; String err = Request["error"]; if (!String.IsNullOrEmpty(err) && err.Equals("Not Approved")) { err = "New Applications cannot be created while an application is being processed."; } int uId; UAS.DataDTO.LoginStatus ls = SessionHelper.LoginStatus; if (String.IsNullOrEmpty(userId)) { uId = ls.UserID; } else { try { uId = Convert.ToInt32(userId); } catch (Exception ex) { uId = 0; Debug.WriteLine("Adap Controller AdapPortal exception:" + ex.Message); } } AuthenticationClient webclient = new AuthenticationClient(); UserDisplay ud = webclient.GetUserDisplay(uId); bool isCaseMgr = UAS.Business.UAS_Business_Functions.hasPermission(2, "RptsExpts"); // Case Manager permission if (isCaseMgr) { // Case Managers will no longer be creating apps for clients. //string clientUserId = Session["clientUserId"] as string; //if (clientUserId != null) //{ // try // { // int cuId = Int32.Parse(clientUserId); // if (cuId > 0) // { // Session["clientUserId"] = null; // return RedirectToAction("CreateAdapApplication", new { userId = cuId } ); // } // } // catch (Exception excptn) // { // Debug.WriteLine("* * * AdapPortal clientUserId exception: " + excptn.Message); // } //} // Check existing formResults to ensure each user is still assigned to this CM. CheckAndRemoveCaseManager(); } IQueryable <vFormResultUser> query = formsRepo.GetFormResultsWithSubjects(SessionHelper.LoginStatus.EnterpriseID, 6); int?soInt = formsRepo.GetStatusDetailByMasterIdentifier(1, "APPROVED").sortOrder; if (isCaseMgr) { query = query.Where(q => q.interviewer == uId); } else { query = query.Where(q => (q.subject == uId) && (q.formStatus == soInt)); } String recert = String.Empty; if (!isCaseMgr) { if (query.Count() > 0) { DateTime dob = Convert.ToDateTime(ud.DOB); recert = new Applications(formsRepo).GetRecert(dob, query.Count(), Convert.ToDateTime(query.OrderByDescending(q => q.statusChangeDate).Select(q => q.statusChangeDate).FirstOrDefault())).ToString("MMMM yyyy"); } else { recert = "None Pending"; } } AdapPortal ap = new AdapPortal() { Name = ud.FirstName + " " + ud.LastName, RecertDate = recert, UserId = uId.ToString(), errorMsg = err, EnterpriseID = SessionHelper.LoginStatus.EnterpriseID }; return(View("~/Views/LA_ADAP/LA_AdapPortal.cshtml", ap)); }
public ActionResult CreateAdapApplication() { def_Forms frm = formsRepo.GetFormByIdentifier("LA-ADAP"); //string userId = Request["userId"]; int userId = 0; try { userId = Convert.ToInt32(Request["userId"]); } catch (Exception excptn) { Debug.WriteLine("Adap Controller CreateAdapApplication exception:" + excptn.Message); } bool isCaseMgr = UAS.Business.UAS_Business_Functions.hasPermission(2, "RptsExpts"); // Case Manager permission int?intSO = formsRepo.GetStatusDetailByMasterIdentifier(1, "CANCELLED").sortOrder; def_FormResults prevRes = formsRepo.GetEntities <def_FormResults>(f => f.subject == userId && intSO != null && f.formStatus != intSO).OrderByDescending(f => f.dateUpdated).FirstOrDefault(); //def_FormResults prevRes = frm.def_FormResults.Where(f => f.subject == userId && intSO != null && f.formStatus != intSO).OrderByDescending(f => f.dateUpdated).FirstOrDefault(); if ((prevRes == null) || (prevRes.formStatus == formsRepo.GetStatusDetailByMasterIdentifier(1, "APPROVED").sortOrder)) { AuthenticationClient webclient = new AuthenticationClient(); UserDisplay ud = webclient.GetUserDisplay(userId); //Dictionary<string, string> ItemsToPopulateFromUAS = new Dictionary<string, string>(); //ItemsToPopulateFromUAS.Add( // "ADAP_D1_FirstName_item", String.IsNullOrEmpty(ud.FirstName) ? String.Empty : ud.FirstName); //ItemsToPopulateFromUAS.Add( // "ADAP_D1_LastName_item", String.IsNullOrEmpty(ud.LastName) ? String.Empty : ud.LastName); //ItemsToPopulateFromUAS.Add( // "ADAP_D2_DOB_item", ud.DOB.HasValue == false ? String.Empty : ud.DOB.Value.ToShortDateString()); //if (ud.Addresses.Any()) //{ // ItemsToPopulateFromUAS.Add( // "ADAP_C1_Address_item", String.IsNullOrEmpty(ud.Addresses[0].Address1) ? String.Empty // : ud.Addresses[0].Address1); // ItemsToPopulateFromUAS.Add( // "LA_ADAP_AddrAptNum_item", String.IsNullOrEmpty(ud.Addresses[0].Address2) ? String.Empty // : ud.Addresses[0].Address2); // ItemsToPopulateFromUAS.Add( // "ADAP_C1_City_item", String.IsNullOrEmpty(ud.Addresses[0].City) ? String.Empty // : ud.Addresses[0].City); // ItemsToPopulateFromUAS.Add( // "ADAP_C1_State_item", String.IsNullOrEmpty(ud.Addresses[0].State) ? String.Empty // : ud.Addresses[0].State); // ItemsToPopulateFromUAS.Add( // "ADAP_C1_Zip_item", String.IsNullOrEmpty(ud.Addresses[0].ZIP) ? String.Empty // : ud.Addresses[0].ZIP); //} //if (ud.Emails.Any()) //{ // ItemsToPopulateFromUAS.Add( // "LA_ADAP_Email_Adr", String.IsNullOrEmpty(ud.Emails[0].Email) ? String.Empty // : ud.Emails[0].Email); //} Dictionary <string, string> ItemsToPopulateFromUAS = new Dictionary <string, string>(); ItemsToPopulateFromUAS.Add( "ADAP_D1_FirstName_item", String.IsNullOrEmpty(ud.FirstName) ? String.Empty : ud.FirstName); ItemsToPopulateFromUAS.Add( "ADAP_D1_LastName_item", String.IsNullOrEmpty(ud.LastName) ? String.Empty : ud.LastName); ItemsToPopulateFromUAS.Add( "ADAP_D1_MiddleIntl_item", String.IsNullOrEmpty(ud.MiddleName) ? String.Empty : ud.MiddleName.Substring(0, 1)); ItemsToPopulateFromUAS.Add( "ADAP_D2_DOB_item", (ud.DOB == null) ? String.Empty : Convert.ToDateTime(ud.DOB).ToString("MM/dd/yyyy")); ItemsToPopulateFromUAS.Add( "ADAP_C1_Address_item", (ud.Addresses != null && ud.Addresses.Count() > 0) ? ud.Addresses[0].Address1 : String.Empty); ItemsToPopulateFromUAS.Add( "ADAP_C1_MayContactYN_item", (ud.Addresses != null && ud.Addresses.Count() > 0) ? ((ud.Addresses[0].MayContactAddress) ? "1" : "0") : String.Empty); ItemsToPopulateFromUAS.Add( "ADAP_C1_City_item", (ud.Addresses != null && ud.Addresses.Count() > 0) ? ud.Addresses[0].City : String.Empty); ItemsToPopulateFromUAS.Add( "ADAP_C1_State_item", (ud.Addresses != null && ud.Addresses.Count() > 0) ? ud.Addresses[0].State : String.Empty); ItemsToPopulateFromUAS.Add( "ADAP_C1_Zip_item", (ud.Addresses != null && ud.Addresses.Count() > 0) ? ud.Addresses[0].ZIP : String.Empty); ItemsToPopulateFromUAS.Add( "ADAP_C2_Address_item", (ud.Addresses != null && ud.Addresses.Count() > 1) ? ud.Addresses[1].Address1 : String.Empty); ItemsToPopulateFromUAS.Add( "ADAP_C2_MayContactYN_item", (ud.Addresses != null && ud.Addresses.Count() > 1) ? ((ud.Addresses[1].MayContactAddress) ? "1" : "0") : String.Empty); ItemsToPopulateFromUAS.Add( "ADAP_C2_City_item", (ud.Addresses != null && ud.Addresses.Count() > 1) ? ud.Addresses[1].City : String.Empty); ItemsToPopulateFromUAS.Add( "ADAP_C2_State_item", (ud.Addresses != null && ud.Addresses.Count() > 1) ? ud.Addresses[1].State : String.Empty); ItemsToPopulateFromUAS.Add( "ADAP_C2_Zip_item", (ud.Addresses != null && ud.Addresses.Count() > 1) ? ud.Addresses[1].ZIP : String.Empty); ItemsToPopulateFromUAS.Add( "ADAP_C3_Phone1_Num_item", (ud.Phones != null && ud.Phones.Count() > 0) ? ud.Phones[0].Phone : String.Empty); ItemsToPopulateFromUAS.Add( "ADAP_C3_Phone1_MayMsgYN_item", (ud.Phones != null && ud.Phones.Count() > 0) ? ((ud.Phones[0].MayContactPhone) ? "1" : "0") : String.Empty); ItemsToPopulateFromUAS.Add( "ADAP_C3_Phone2_Num_item", (ud.Phones != null && ud.Phones.Count() > 1) ? ud.Phones[1].Phone : String.Empty); ItemsToPopulateFromUAS.Add( "ADAP_C3_Phone2_MayMsgYN_item", (ud.Phones != null && ud.Phones.Count() > 1) ? ((ud.Phones[1].MayContactPhone) ? "1" : "0") : String.Empty); Applications appl = new Applications(formsRepo); def_FormResults frmRes = appl.CreateFormResultPopulatedFromUAS(SessionHelper.LoginStatus.EnterpriseID, SessionHelper.LoginStatus.GroupID, userId, frm.formId, ItemsToPopulateFromUAS); if (isCaseMgr) { frmRes.interviewer = SessionHelper.LoginStatus.UserID; } else if (ud.ManagerID != null) { frmRes.interviewer = ud.ManagerID; } frmRes.statusChangeDate = DateTime.Now; // Save the FormResult, ItemResults, and ResponseVariables int newFormResultId = 0; try { newFormResultId = formsRepo.AddFormResult(frmRes); } catch (Exception ex) { Debug.WriteLine("AddFormResult exception:" + ex.Message); } Debug.WriteLine("AddFormResult newFormResultId:" + newFormResultId.ToString()); if (SessionHelper.SessionForm == null) { SessionHelper.SessionForm = new SessionForm(); } SessionForm sf = SessionHelper.SessionForm; sf.formId = frm.formId; sf.formIdentifier = frm.identifier; sf.sectionId = formsRepo.GetSectionByIdentifier("LA_ADAP_PreScreen").sectionId; sf.partId = formsRepo.GetPartByFormAndIdentifier(frm, "LA-ADAP").partId; // *** RRB - should be deprecated - use SessionForm // *** BR - line 359 of the ResultsController calls this session variable, so it must be set to prevent an exception. // Other parts of the application may still use that variable, so changing it in the ResultsController may break something else. Session["part"] = sf.partId; // Should have the partId also - may not be required. sf.formResultId = newFormResultId; return(RedirectToAction("Template", "Results", new { sectionId = sf.sectionId.ToString() })); } else { if (isCaseMgr) { userId = SessionHelper.LoginStatus.UserID; } return(RedirectToAction("AdapPortal", "LAADAP", new { userId = userId, error = "Not Approved" })); } }
public async Task SendProfile(UserDisplay profileUpdate) => await Clients.Others.SendAsync("receiveProfile", profileUpdate);
public async Task <IActionResult> GetFriendList(Guid userId, [FromQuery] PagingRequest request) { request.PageSize = 20; var messages = new List <MessageResponse>(); var tempMessages = new List <MessageResponse>(); var userList = new List <Guid>(); var recentMessages = await _context.HaveMessages .Where(x => x.SenderId == userId || x.ReceiverId == userId) .OrderByDescending(x => x.SentAt) .ToListAsync(); foreach (var item in recentMessages) { var m = new MessageResponse(item, _storageService); if (item.SenderId == userId) { m.Type = "sent"; } else { m.Type = "received"; } tempMessages.Add(m); } foreach (MessageResponse message in tempMessages) { if (message.Type == "sent") { if (!messages.Any(x => x.ReceiverId == message.ReceiverId || x.ReceiverId == message.SenderId)) { messages.Add(message); } } else { if (!messages.Any(x => x.SenderId == message.ReceiverId || x.SenderId == message.SenderId)) { messages.Add(message); } } } messages = messages .Skip((request.PageIndex - 1) * request.PageSize) .Take(request.PageSize).ToList(); var friendList = new List <FriendResponse>(); foreach (MessageResponse message in messages) { AppUser user = new AppUser(); if (message.SenderId == userId) { user = await _context.Users.FindAsync(message.ReceiverId); } else { user = await _context.Users.FindAsync(message.SenderId); } var userDisplay = new UserDisplay(user, _storageService); var messageResponses = new List <MessageResponse>(); messageResponses.Add(message); var friend = new FriendResponse() { Messages = messageResponses, User = userDisplay }; friendList.Add(friend); } return(Ok(friendList)); }
public SendingUserNotification(UserDisplay user, IUmbracoContext umbracoContext) { User = user; UmbracoContext = umbracoContext; }