Beispiel #1
0
        /*
         * Populates the details fields
         */
        private async void fillFields()
        {
            Models.Clinician currentClinician = ClinicianController.Instance.LoggedInClinician;

            // Database Pane
            UserAPI userAPI = new UserAPI();
            Tuple <HttpStatusCode, int> userCountResult = await userAPI.GetUserCount();

            if (userCountResult.Item1 == HttpStatusCode.OK)
            {
                // Successfully fetched usercount -> apply label
                UserCountLabel.Text = String.Format("There are {0} users currently in the database", userCountResult.Item2);
            }
            else
            {
                UserCountLabel.Text = String.Format("Failed to get result from database ({0})", userCountResult.Item1);
            }
        }
        public IActionResult Invite(Models.Clinician model)
        {
            if (!ModelState.IsValid)
            {
                var errors = ModelState
                             .SelectMany(x => x.Value.Errors, (y, z) => z.Exception.Message);

                return(BadRequest(errors));
            }
            var orgUserMappingKey = int.Parse(_userService.GetCurrentUserId());
            var userName          = _userService.GetCurrentUserName();
            var permList          = new List <OrgUserServiceDevReference.OrgUserMappingPerm>();

            if (model.ACCESS_CLIENTS >= 0)
            {
                var ACCESS_CLIENTS_KEY = _permissionData.GetPermissionByIdAsync("ACCESS_CLIENTS").Result;
                var perm = new OrgUserServiceDevReference.OrgUserMappingPerm();
                perm.PermissionKey            = ACCESS_CLIENTS_KEY;
                perm.OrgUserMappingKey        = orgUserMappingKey;
                perm.PermissionParameterValue = model.ACCESS_CLIENTS;
                permList.Add(perm);
            }
            if (model.ACCESS_NEEDS_REVIEW >= 0)
            {
                var ACCESS_NEEDS_REVIEW_KEY = _permissionData.GetPermissionByIdAsync("ACCESS_NEEDS_REVIEW").Result;
                var perm = new OrgUserServiceDevReference.OrgUserMappingPerm();
                perm.PermissionKey            = ACCESS_NEEDS_REVIEW_KEY;
                perm.OrgUserMappingKey        = orgUserMappingKey;
                perm.PermissionParameterValue = model.ACCESS_NEEDS_REVIEW;
                permList.Add(perm);
            }
            if (model.ACCESS_REPORTS >= 0)
            {
                var ACCESS_REPORTS_KEY = _permissionData.GetPermissionByIdAsync("ACCESS_REPORTS").Result;
                var perm = new OrgUserServiceDevReference.OrgUserMappingPerm();
                perm.PermissionKey            = ACCESS_REPORTS_KEY;
                perm.OrgUserMappingKey        = orgUserMappingKey;
                perm.PermissionParameterValue = model.ACCESS_REPORTS;
                permList.Add(perm);
            }
            if (model.ALLOCATE_INVENTORY >= 0)
            {
                var ALLOCATE_INVENTORY_KEY = _permissionData.GetPermissionByIdAsync("ALLOCATE_INVENTORY").Result;
                var perm = new OrgUserServiceDevReference.OrgUserMappingPerm();
                perm.PermissionKey            = ALLOCATE_INVENTORY_KEY;
                perm.OrgUserMappingKey        = orgUserMappingKey;
                perm.PermissionParameterValue = model.ALLOCATE_INVENTORY;
                permList.Add(perm);
            }
            if (model.ASSIGN_ASSESSMENTS >= 0)
            {
                var ASSIGN_ASSESSMENTS_KEY = _permissionData.GetPermissionByIdAsync("ASSIGN_ASSESSMENTS").Result;
                var perm = new OrgUserServiceDevReference.OrgUserMappingPerm();
                perm.PermissionKey            = ASSIGN_ASSESSMENTS_KEY;
                perm.OrgUserMappingKey        = orgUserMappingKey;
                perm.PermissionParameterValue = model.ASSIGN_ASSESSMENTS;
                permList.Add(perm);
            }

            var    orgUserInvitation = _clinicianData.InviteAsync(model.FirstName, model.LastName, model.EmailAddress, model.PermissionProfileId, permList.ToArray(), orgUserMappingKey).Result;
            string status            = (orgUserInvitation != null) ? orgUserInvitation.OrgUserInvitationStatus : string.Empty;
            string picurl            = "";

            if (status.Equals(InvitationStatusType.Invited, StringComparison.OrdinalIgnoreCase))
            {
                var customerEmail = _messageService.GetMessageTemplateByKeyAsync(1).Result;
                var message       = new CoreServiceDevReference.Message();
                picurl = HttpContext.Request.Scheme + "://" + HttpContext.Request.Host;
                string returnurl = string.Format("ReturnURL={0}/Login.aspx?EmailAddress={1}", picurl, orgUserInvitation.EmailAddress);
                string link      = string.Format("{0}&orgUserInvitationKey={1}&VerificationKey={2}&{3}",
                                                 "/Register?iConnectInvitation=1",
                                                 orgUserInvitation.OrgUserInvitationKey,
                                                 orgUserInvitation.RowGUID.ToString().Substring(0, 8),
                                                 1);

                string text = customerEmail.EmailText
                              .Replace("<FIRSTNAME />", orgUserInvitation.FirstName)
                              .Replace("<LASTNAME />", orgUserInvitation.LastName)
                              .Replace("<SUPERUSERNAME />", _userService.GetCurrentUserName())
                              .Replace("<INVITELINK />", link);
                message.Format  = 0;
                message.Body    = text;
                message.Subject = customerEmail.EmailSubject;
                message.From    = new Recipient {
                    Address = customerEmail.EmailFrom
                };
                message.To = new[] { new Recipient {
                                         Address = orgUserInvitation.EmailAddress
                                     } };

                var messageResult = _messageService.SendMailMessage(message, EmailMessageType.OrgUserInvitation).Result;

                //return Ok(messageResult);
                return(RedirectToAction("Index", "Home"));
            }

            return(Ok(picurl));
        }