Esempio n. 1
0
        internal async Task <ContentItemVariantModel <UserModel> > CreateUser(IntercomUser user)
        {
            string itemName;

            if (user.Type == "admin")
            {
                itemName = user.Name;
            }
            else
            {
                itemName = user.Id;
            }

            var userItem = await CreateUserItem(itemName, user.Id);

            UserModel userModel = new UserModel
            {
                Name         = user.Name,
                Type         = user.Type,
                Email        = user.Email,
                Id           = user.Id,
                IntercomLink = "<p><a href=\"" + IntercomFunctions.GetIntercomUserLink(user.Id, user.Type) + "\">Link to intercom</a></p>"
            };

            var userVariant = await CreateUserVariant(userModel, ContentItemIdentifier.ById(userItem.Id));

            var publishUser = await PublishItemVariant(userItem.Id.ToString());

            return(userVariant);
        }
Esempio n. 2
0
        internal IntercomUser GetIntercomUser(GenericIntercomUser genericUser)
        {
            if (!userList.ContainsKey(genericUser.Id))
            {
                IntercomUser newUser;
                switch (genericUser.Type)
                {
                case "admin":
                    Admin admin;
                    try
                    {
                        logger.Trace("Downloading admin from Intercom: " + genericUser.Id);
                        admin   = adminsClient.View(genericUser.Id);
                        newUser = new IntercomUser(admin);
                    }
                    catch (Intercom.Exceptions.ApiException e)
                    {
                        if (e.StatusCode == 404)
                        {
                            logger.Trace("Admin request returned 404 for: " + genericUser.Id);
                            newUser = new IntercomUser()
                            {
                                Id    = genericUser.Id,
                                Type  = genericUser.Type,
                                Name  = "Non-existing admin",
                                Email = ""
                            };
                        }
                        else
                        {
                            logger.Error(e, "Couldn't download admin from Intercom.");
                            throw e;
                        }
                    }
                    userList.Add(genericUser.Id, newUser);
                    break;

                case "user":
                case "lead":
                    User user;
                    try
                    {
                        logger.Trace("Downloading user from Intercom: " + genericUser.Id);
                        user    = usersClient.View(genericUser.Id);
                        newUser = new IntercomUser(user);
                    }
                    catch (Intercom.Exceptions.ApiException e)
                    {
                        if (e.StatusCode == 404)
                        {
                            logger.Trace("User request returned 404 for: " + genericUser.Id);
                            newUser = new IntercomUser()
                            {
                                Id    = genericUser.Id,
                                Type  = genericUser.Type,
                                Name  = "Non-existing user",
                                Email = ""
                            };
                        }
                        else
                        {
                            logger.Error(e, "Couldn't download user from Intercom.");
                            throw e;
                        }
                    }
                    userList.Add(genericUser.Id, newUser);
                    break;

                default:
                    logger.Warn("Unknown type of user requested.");
                    break;
                }
            }
            return(userList[genericUser.Id]);
        }