protected override async Task <PortalActionResult> ProcessImport(string id = "")
        {
            string validateResult = await ValidatePartnerPortalAsync(id);

            if (!string.IsNullOrEmpty(validateResult))
            {
                return(new PortalActionResult
                {
                    IsSuccess = false,
                    Message = validateResult
                });
            }

            var partnerPortal =
                ZohoRepository.PartnerPortals.FirstOrDefault(x => x.PartnerPortalID.Equals(id));

            var accountId = partnerPortal.PartnerAccount;

            var contactId = partnerPortal.PortalAdmin;

            //PortalActionResult myobResult = await MyobContactCustomerDataSyncAysnc(accountId, id);
            //if (!myobResult.IsSuccess)
            //{
            //    return myobResult;
            //}


            //var subject = myobResult.IsSuccess
            //    ? $"[Account:{accountId}] added to Myob"
            //    : $"[Account:{accountId}] could not add to Myob";

            //var tos = _myobApiService.SalesEmail.Split(new char[] { ';' }).ToList();
            //var body = string.IsNullOrEmpty(myobResult.Message) ? "Success" : myobResult.Message;

            ////do not need wait for email result
            //EmailSender.SendEmailAsync(subject, body, tos);


            //check contact created in company
            var company = await _userManager.GetCompanyByZohoAccountIdAsync(accountId);

            int companyId;

            if (company == null)
            {
                companyId = await _userManager.CreateCompanyAsync(new Company
                {
                    CompanyZohoAccountId = accountId,
                    CreatedBy            = "importer",
                    CreatedTime          = DateTime.Now
                });
            }
            else
            {
                companyId = company.Id;
            }

            string oldPortalAdminZohoContactId = await UpdateOldPortalAdminIfNeededAsync(companyId, contactId);

            //check user information
            var contact = ZohoRepository.Contacts.FirstOrDefault(x => x.ContactID == contactId);

            var user = await _userManager.FindByEmailAsync(contact.Email);

            var message   = string.Empty;
            var isSuccess = false;

            if (user == null)
            {
                PortalActionResult updateResult
                    = await CreateUserAndAddUserAsPortalAdminAsync(contact, companyId);

                isSuccess = updateResult.IsSuccess;
                message   = updateResult.Message;

                //create user
            }
            else
            {
                var updateResult
                    = await UpdateExistingUserAsPortalAdminAsync(user, companyId);

                isSuccess = updateResult.IsSuccess;
                message   = updateResult.Message;
            }

            if (isSuccess)
            {
                var updateResult = UpdateZohoIfNeeded(contact, partnerPortal, oldPortalAdminZohoContactId);
                return(new PortalActionResult
                {
                    IsSuccess = updateResult.IsSuccess,
                    Message = string.Format("{0}\r\n{1}", message, updateResult.Message)
                });
            }
            else
            {
                return(new PortalActionResult
                {
                    IsSuccess = false,
                    Message = message
                });
            }
        }