public static AlienResult ConvertToResult( Alien alien, ContactResult contactResult, PassportResult passportResult, OrganizationResult organizationResult, StateRegistrationResult stateRegistrationResult) { Contract.Argument.IsNotNull(alien, nameof(alien)); Contract.Argument.IsNotNull(contactResult, nameof(contactResult)); Contract.Argument.IsNotNull(passportResult, nameof(passportResult)); Contract.Argument.IsNotNull(organizationResult, nameof(organizationResult)); Contract.Argument.IsNotNull(stateRegistrationResult, nameof(stateRegistrationResult)); return(new AlienResult { Id = alien.Id, InvitationId = alien.InvitationId, Contact = contactResult, Passport = passportResult, Organization = organizationResult, StateRegistration = stateRegistrationResult, Position = alien.Position, WorkPlace = alien.WorkPlace, WorkAddress = alien.WorkAddress, StayAddress = alien.StayAddress }); }
protected void btnCreate_Click(object sender, EventArgs e) { try { Organization org = ES.Services.Organizations.GetOrganization(PanelRequest.ItemID); string[] cuurrencyData = ddlCurrency.SelectedValue.Split('|'); if (string.IsNullOrEmpty(administrator.GetAccount())) { messageBox.ShowWarningMessage("CRM_ADMIN_IS_NOT_SPECIFIED"); return; } OrganizationResult res = ES.Services.CRM.CreateOrganization(org.Id, cuurrencyData[0], cuurrencyData[1], cuurrencyData[2], cuurrencyData[3], administrator.GetAccountId(), ddlCollation.SelectedValue); messageBox.ShowMessage(res, "CreateCrmOrganization", "HostedCRM"); if (res.IsSuccess) { ShowCrmOrganizationDetails(administrator.GetAccount(), res.Value); } } catch (Exception ex) { messageBox.ShowErrorMessage("CRM_CREATE_ORGANIZATION", ex); } }
public async Task <OrganizationResult> UpgradeOrganization(IAgencyOwner agencyOwner, RecruitingOrganizationUpgradeInput input) { _logger.LogInformation(GetLogMessage("{@input}"), input); var retVal = new OrganizationResult() { OrganizationId = agencyOwner.OrganizationId }; var organization = await Repository.Queryable() .Include(x => x.ProviderOrganization) .Include(x => x.MarketingOrganization) .Include(x => x.RecruitingOrganization) .Include(x => x.OrganizationPeople) .ThenInclude(x => x.Marketer) .Include(x => x.OrganizationPeople) .ThenInclude(x => x.Customer) .Include(x => x.OrganizationPeople) .ThenInclude(x => x.Contractor) .Include(x => x.OrganizationPeople) .ThenInclude(x => x.ProjectManager) .Include(x => x.OrganizationPeople) .ThenInclude(x => x.AccountManager) .Include(x => x.OrganizationPeople) .ThenInclude(x => x.Recruiter) .Where(x => x.Id == agencyOwner.OrganizationId && x.RecruitingOrganization == null) .FirstOrDefaultAsync(); if (organization == null) { retVal.ErrorMessage = "unable to upgrade organization, possibly because it's already upgraded"; return(retVal); } var orgPerson = organization .OrganizationPeople .First(x => x.PersonId == agencyOwner.CustomerId); retVal = UpgradeToRecruitingOrganization(input, organization, orgPerson, true); return(retVal); }
public static EmployeeResult ConvertToResult( Employee employee, ContactResult contactResult, PassportResult passportResult, OrganizationResult organizationResult, StateRegistrationResult stateRegistrationResult) { Contract.Argument.IsNotNull(employee, nameof(employee)); return(new EmployeeResult { Id = employee.Id, Contact = contactResult, Passport = passportResult, Organization = organizationResult, StateRegistration = stateRegistrationResult, ManagerId = employee.ManagerId, AcademicDegree = employee.AcademicDegree, AcademicRank = employee.AcademicRank, Education = employee.Education, Position = employee.Position, WorkPlace = employee.WorkPlace }); }
private async Task <OrganizationResult> CreateOrganization(OrganizationCreateInput input, Guid customerId) { _logger.LogInformation(GetLogMessage("Creating Organization: {0}"), input.Name); var organization = await Repository.Queryable() .Where(x => x.Name == input.Name) .FirstOrDefaultAsync(); var retVal = new OrganizationResult(); if (organization != null) { retVal.ErrorMessage = "Organization with the same name already in use"; return(retVal); } organization = new Organization { Iso2 = input.Iso2, ProvinceState = input.ProvinceState, CustomerId = customerId, CategoryId = 1, ObjectState = ObjectState.Added, ImageUrl = EntityConstants.DefaultOrgImageUrl, PrimaryColor = "grey-600", SecondaryColor = "grey-500", TertiaryColor = "grey-400", OrganizationType = OrganizationType.Buyer, PaymentTerms = new List <OrganizationPaymentTerm>() { new OrganizationPaymentTerm() { IsDefault = true, ObjectState = ObjectState.Added, PaymentTermId = 1 } } }.InjectFrom(input) as Organization; var organizationRecords = Repository.InsertOrUpdateGraph(organization, true); _logger.LogDebug(GetLogMessage("{0} Organization Records updated"), organizationRecords); if (organizationRecords > 0) { var person = _organizationPersonRepo.CreateOrgPerson(new OrganizationPersonInput() { PersonId = customerId, IsAccountManager = false, IsProjectManager = false, IsContractor = false, IsMarketer = false, IsRecruiter = false, IsCustomer = true, }, organization.Id); var result = Repository.Commit(); if (result <= 0) { return(OrganizationResult.Failed); } var records = await _buyerService.PushCustomer(person.OrganizationId, person.PersonId); _logger.LogDebug(GetLogMessage("{0} Records Updated"), records); if (records > 0) { retVal.Succeeded = true; retVal.OrganizationId = organization.Id; } } return(retVal); }
public static OrganizationResult CreateOrganization(int organizationId, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string regionName, int userId, string collation) { OrganizationResult res = StartTask <OrganizationResult>("CRM", "CREATE_ORGANIZATION"); try { Organization org = OrganizationController.GetOrganization(organizationId); try { if (!CheckQuota(org.PackageId)) { CompleteTask(res, CrmErrorCodes.QUOTA_HAS_BEEN_REACHED); return(res); } } catch (Exception ex) { CompleteTask(res, CrmErrorCodes.CANNOT_CHECK_QUOTAS, ex); return(res); } CRM crm = GetCRMProxy(org.PackageId); Guid orgId = Guid.NewGuid(); OrganizationUser user = OrganizationController.GetUserGeneralSettings(organizationId, userId); if (string.IsNullOrEmpty(user.FirstName)) { CompleteTask(res, CrmErrorCodes.FIRST_NAME_IS_NOT_SPECIFIED); return(res); } if (string.IsNullOrEmpty(user.LastName)) { CompleteTask(res, CrmErrorCodes.LAST_NAME_IS_NOT_SPECIFIED); return(res); } org.CrmAdministratorId = user.AccountId; org.CrmCurrency = string.Join("|", new[] { baseCurrencyCode, baseCurrencyName, baseCurrencySymbol, regionName }); org.CrmCollation = collation; org.CrmOrgState = (int)CrmOrganizationState.Enabled; org.CrmOrganizationId = orgId; OrganizationResult serverRes = crm.CreateOrganization(orgId, org.OrganizationId, org.Name, baseCurrencyCode, baseCurrencyName, baseCurrencySymbol, user.AccountName, user.FirstName, user.LastName, user.PrimaryEmailAddress, collation); if (!serverRes.IsSuccess) { res.ErrorCodes.AddRange(serverRes.ErrorCodes); CompleteTask(res); return(res); } ValueResultObject <DomainInfo> resDomain = CreateOrganizationDomain(org); res.ErrorCodes.AddRange(resDomain.ErrorCodes); int crmServiceId = GetCRMServiceId(org.PackageId); StringDictionary serviceSettings = ServerController.GetServiceSettings(crmServiceId); string port = serviceSettings[Constants.Port]; string schema = serviceSettings[Constants.UrlSchema]; if (port == "80" && schema == "http") { port = string.Empty; } if (port == "443" && schema == "https") { port = string.Empty; } if (port != string.Empty) { port = ":" + port; } string strDomainName = string.Format("{0}.{1}", org.OrganizationId, serviceSettings[Constants.IFDWebApplicationRootDomain]); org.CrmUrl = string.Format("{0}://{1}{2}", schema, strDomainName, port); PackageController.UpdatePackageItem(org); CrmUserResult crmUser = crm.GetCrmUserByDomainName(user.DomainUserName, org.OrganizationId); res.ErrorCodes.AddRange(crmUser.ErrorCodes); if (crmUser.IsSuccess) { try { DataProvider.CreateCRMUser(userId, crmUser.Value.CRMUserId, crmUser.Value.BusinessUnitId); } catch (Exception ex) { CompleteTask(res, CrmErrorCodes.CANNOT_ADD_ORGANIZATION_OWNER_TO_ORGANIZATIO_USER, ex, "Cannot add organization owner to organization users"); } } res.Value = org; } catch (Exception ex) { CompleteTask(res, CrmErrorCodes.CREATE_CRM_ORGANIZATION_GENERAL_ERROR, ex); return(res); } CompleteTask(); return(res); }
public async Task <OrganizationResult> UpgradeOrganization(IOrganizationCustomer organizationCustomer, OrganizationUpgradeInput input) { _logger.LogInformation(GetLogMessage("Upgrade Organization Id: {input}"), organizationCustomer.OrganizationId); var retVal = new OrganizationResult() { OrganizationId = organizationCustomer.OrganizationId }; var organization = await Repository.Queryable() .Include(x => x.ProviderOrganization) .Include(x => x.MarketingOrganization) .Include(x => x.RecruitingOrganization) .Include(x => x.OrganizationPeople) .ThenInclude(x => x.Marketer) .Include(x => x.OrganizationPeople) .ThenInclude(x => x.Customer) .Include(x => x.OrganizationPeople) .ThenInclude(x => x.Contractor) .Include(x => x.OrganizationPeople) .ThenInclude(x => x.ProjectManager) .Include(x => x.OrganizationPeople) .ThenInclude(x => x.AccountManager) .Include(x => x.OrganizationPeople) .ThenInclude(x => x.Recruiter) .Where(x => x.Id == organizationCustomer.OrganizationId) .FirstAsync(); _logger.LogDebug(GetLogMessage("Organization Found: {Organization}"), organization.OrganizationType.ToString()); var upgradeProviderOrg = (input.ProviderOrganizationInput != null); var upgradeMarketingOrg = (input.MarketingOrganizationInput != null); var upgradeRecruitingOrg = (input.RecruitingOrganizationInput != null); _logger.LogDebug(GetLogMessage("Upgrade Provider Org: {Provider}; Upgrade Marketing Org: {Marketing}; Upgrade Recruiting Org {Recruiting}"), upgradeProviderOrg, upgradeMarketingOrg, upgradeRecruitingOrg); var orgPerson = organization .OrganizationPeople .First(x => x.PersonId == organizationCustomer.CustomerId); _logger.LogDebug(GetLogMessage("Person: {PersonId}"), orgPerson.PersonId); orgPerson.ObjectState = ObjectState.Modified; organization.CategoryId = input.CategoryId; organization.UpdatedById = _userInfo.Value.UserId; organization.ObjectState = ObjectState.Modified; organization.Updated = DateTimeOffset.UtcNow; if (upgradeProviderOrg) { if (organization.ProviderOrganization != null) { retVal.ErrorMessage = "Provider organization is already upgraded"; return(retVal); } _logger.LogInformation(GetLogMessage("Upgrading to Provider Organization...")); var upgradeResult = UpgradeToProviderOrganization(input.ProviderOrganizationInput, organization, orgPerson, true); if (!upgradeMarketingOrg && organization.MarketingOrganization == null) { // add so we have a default marketer in the org orgPerson.Marketer = new OrganizationMarketer() { Updated = DateTimeOffset.UtcNow, Created = DateTimeOffset.UtcNow, MarketerId = orgPerson.PersonId, OrganizationId = orgPerson.OrganizationId, MarketerStream = 0, MarketerBonus = 0, ObjectState = ObjectState.Added }; } if (!upgradeRecruitingOrg && organization.RecruitingOrganization == null) { // add so we have a default recruiter orgPerson.Recruiter = new OrganizationRecruiter() { Updated = DateTimeOffset.UtcNow, Created = DateTimeOffset.UtcNow, RecruiterId = orgPerson.PersonId, OrganizationId = orgPerson.OrganizationId, RecruiterStream = 0, ObjectState = ObjectState.Added, }; } } if (upgradeMarketingOrg) { if (organization.MarketingOrganization != null) { throw new ApplicationException("Marketing organization is already upgraded"); } _logger.LogDebug(GetLogMessage("Upgrading to Marketing Organization...")); var newMarketingOrgInput = new MarketingOrganizationInput() { DefaultMarketerId = orgPerson.PersonId }.InjectFrom(input.MarketingOrganizationInput) as MarketingOrganizationInput; retVal = UpgradeToMarketingOrganization(newMarketingOrgInput, organization, orgPerson, true); } if (upgradeRecruitingOrg) { if (organization.RecruitingOrganization != null) { retVal.ErrorMessage = "Recruiting organization is already upgraded"; return(retVal); } _logger.LogDebug(GetLogMessage("Upgrading to Recruiting Organization...")); retVal = UpgradeToRecruitingOrganization(input.RecruitingOrganizationInput, organization, orgPerson, true); } return(retVal); }
private OrganizationResult UpgradeToProviderOrganization(ProviderOrganizationUpgradeInput input, Organization organization, OrganizationPerson person, bool saveChanges = true) { _logger.LogInformation(GetLogMessage("{Organization}, Saving Changes: {saveChanges}"), organization.Name, saveChanges); var retVal = new OrganizationResult() { OrganizationId = organization.Id }; person.AccountManager = new OrganizationAccountManager() { AccountManagerId = person.PersonId, OrganizationId = person.OrganizationId, AccountManagerStream = input.AccountManagerStream, ObjectState = ObjectState.Added }; person.ProjectManager = new OrganizationProjectManager() { OrganizationId = person.OrganizationId, ProjectManagerId = person.PersonId, ProjectManagerStream = input.ProjectManagerStream, ObjectState = ObjectState.Added }; person.Contractor = new OrganizationContractor() { ContractorId = person.PersonId, OrganizationId = person.OrganizationId, ContractorStream = input.ContractorStream, ObjectState = ObjectState.Added }; person.ObjectState = ObjectState.Modified; var records = _organizationPersonRepo.InsertOrUpdateGraph(person, true); _logger.LogDebug(GetLogMessage("{0} Records updated"), records); if (records == 0) { retVal.Succeeded = false; retVal.ErrorMessage = "Unable to add user to provider roles"; return(retVal); } organization.ProviderOrganization = new ProviderOrganization() { ContractorStream = input.ContractorStream, ProjectManagerStream = input.ProjectManagerStream, AccountManagerStream = input.AccountManagerStream, AgencyStream = input.AgencyStream, Discoverable = input.Discoverable, ObjectState = ObjectState.Added, SystemStream = SystemStream, DefaultAccountManagerId = person.PersonId, DefaultContractorId = person.PersonId, DefaultProjectManagerId = person.PersonId }.InjectFrom(input) as ProviderOrganization; organization.ObjectState = ObjectState.Modified; organization.OrganizationType = organization.OrganizationType.Add(OrganizationType.Provider); _logger.LogDebug(GetLogMessage("new org type {0}"), organization.OrganizationType); var orgRecords = Repository.InsertOrUpdateGraph(organization, saveChanges); _logger.LogDebug(GetLogMessage("{0} Organization Records updated"), orgRecords); if (orgRecords == 0) { retVal.ErrorMessage = "Unable to update organization"; return(retVal); } var stripeResult = _subscriptionService.PushSubscription(organization.Id, saveChanges).Result; _logger.LogDebug(GetLogMessage("{StripeChanges} stripe records updated"), stripeResult); if (stripeResult > 0) { retVal.Succeeded = true; } return(retVal); }
private void OnOrganizationCommand(BotShell bot, CommandArgs e) { if (bot.GetUserID(e.Args[0]) < 100) { bot.SendReply(e, "No such user: "******"Organization »» Gathering Data..."); WhoisResult whoisResult = XML.GetWhois(e.Args[0], bot.Dimension); if (whoisResult != null && whoisResult.Organization != null) { OrganizationResult organization = XML.GetOrganization(whoisResult.Organization.ID, bot.Dimension); if (organization != null && organization.Members != null) { RichTextWindow window = new RichTextWindow(bot); RichTextWindow membersWindow = new RichTextWindow(bot); window.AppendTitle(organization.Name); window.AppendHighlight("Leader: "); window.AppendNormal(organization.Leader.Nickname); window.AppendLineBreak(); window.AppendHighlight("Alignment: "); window.AppendNormal(organization.Faction); window.AppendLineBreak(); window.AppendHighlight("Members: "); window.AppendNormal(organization.Members.Items.Length.ToString()); window.AppendLineBreak(); SortedDictionary <string, int> profs = new SortedDictionary <string, int>(); SortedDictionary <string, int> breeds = new SortedDictionary <string, int>(); SortedDictionary <string, int> genders = new SortedDictionary <string, int>(); membersWindow.AppendHeader("Members"); foreach (OrganizationMember member in organization.Members.Items) { if (!profs.ContainsKey(member.Profession)) { profs.Add(member.Profession, 0); } profs[member.Profession]++; if (!breeds.ContainsKey(member.Breed)) { breeds.Add(member.Breed, 0); } breeds[member.Breed]++; if (!genders.ContainsKey(member.Gender)) { genders.Add(member.Gender, 0); } genders[member.Gender]++; membersWindow.AppendHighlight(member.Nickname); membersWindow.AppendNormal(string.Format(" {0} (L {1} / DR {2}) {3} {4}", member.Rank, member.Level, member.DefenderLevel, member.Breed, member.Profession)); membersWindow.AppendLineBreak(); } string stats; char[] trimchars = new char[] { ' ', ',' }; window.AppendHighlight("Genders: "); stats = string.Empty; foreach (KeyValuePair <string, int> kvp in genders) { stats += kvp.Value + " " + kvp.Key + ", "; } window.AppendNormal(stats.Trim(trimchars)); window.AppendLineBreak(); window.AppendHighlight("Breeds: "); stats = string.Empty; foreach (KeyValuePair <string, int> kvp in breeds) { stats += kvp.Value + " " + kvp.Key + ", "; } window.AppendNormal(stats.Trim(trimchars)); window.AppendLineBreak(); window.AppendHighlight("Professions: "); stats = string.Empty; foreach (KeyValuePair <string, int> kvp in profs) { stats += kvp.Value + " " + kvp.Key + ", "; } window.AppendNormal(stats.Trim(trimchars)); window.AppendLineBreak(); window.AppendHighlight("ID: "); window.AppendNormal(organization.ID.ToString()); window.AppendLineBreak(); window.AppendHighlight("Last Updated: "); window.AppendNormal(organization.LastUpdated); window.AppendLineBreak(2); window.AppendRawString(membersWindow.Text); bot.SendReply(e, organization.Name + " »» ", window); return; } } bot.SendReply(e, "Unable to gather information on that organization " + this.TimeoutError); }
private bool UpdateRoster(out string[] removed, out string[] added, out RichTextWindow window) { this._state = RosterState.FetchingMembers; removed = new string[0]; added = new string[0]; window = null; DateTime startTime = DateTime.Now; List <string> oldMembers = new List <string>(); List <string> newMembers = new List <string>(); using (IDbCommand command = this._database.Connection.CreateCommand()) { command.CommandText = "SELECT ID FROM organizations"; IDataReader reader = command.ExecuteReader(); while (reader.Read()) { try { int id = (int)reader.GetInt64(0); OrganizationResult org = XML.GetOrganization(id, this._bot.Dimension, false, true); if (org == null || org.Members == null || org.Members.Items == null || org.Members.Items.Length == 0) { throw new Exception(); } foreach (OrganizationMember member in org.Members.Items) { newMembers.Add(member.Nickname); } } catch { reader.Close(); return(false); } } reader.Close(); } using (IDbCommand command = this._database.Connection.CreateCommand()) { command.CommandText = "SELECT Username FROM members"; IDataReader reader = command.ExecuteReader(); while (reader.Read()) { try { string name = reader.GetString(0); oldMembers.Add(name); } catch { } } reader.Close(); } this._state = RosterState.CrossCheckingMembers; this._progressMax = newMembers.Count + oldMembers.Count; this._progressValue = 0; List <string> addMembers = new List <string>(); List <string> removeMembers = new List <string>(); foreach (string member in newMembers) { if (!oldMembers.Contains(member)) { addMembers.Add(member); this._bot.GetMainBot().SendNameLookup(member); } this._progressValue++; } foreach (string member in oldMembers) { if (!newMembers.Contains(member)) { removeMembers.Add(member); } this._progressValue++; } this._state = RosterState.RemovingMembers; this._progressMax = removeMembers.Count; this._progressValue = 0; foreach (string member in removeMembers) { this._bot.Users.RemoveUser(member); this._bot.Users.RemoveAlt(member); this._bot.FriendList.Remove("notify", member); this._database.ExecuteNonQuery("DELETE FROM members WHERE Username = '******'"); this._progressValue++; } this._state = RosterState.AddingMembers; this._progressMax = addMembers.Count; this._progressValue = 0; List <string> failed = new List <string>(); foreach (string member in addMembers) { if (this._bot.Users.AddUser(member, UserLevel.Member)) { this._bot.FriendList.Add("notify", member); this._database.ExecuteNonQuery("INSERT INTO members VALUES ('" + member + "', 0)"); } else { failed.Add(member); } this._progressValue++; } foreach (string member in failed) { addMembers.Remove(member); } added = addMembers.ToArray(); removed = removeMembers.ToArray(); TimeSpan elapsed = DateTime.Now - startTime; window = new RichTextWindow(this._bot); window.AppendTitle("Roster Update Report"); window.AppendHighlight("Processing Time: "); window.AppendNormal(String.Format("{0:00}:{1:00}:{2:00}", Math.Floor(elapsed.TotalHours), elapsed.Minutes, elapsed.Seconds)); window.AppendLineBreak(); window.AppendHighlight("Members Added: "); window.AppendNormal(added.Length.ToString()); window.AppendLineBreak(); window.AppendHighlight("Members Removed: "); window.AppendNormal(removed.Length.ToString()); window.AppendLineBreak(); if (added.Length > 0) { window.AppendLineBreak(); window.AppendHeader("Added Members"); foreach (string member in added) { window.AppendHighlight(member); window.AppendLineBreak(); } } if (removed.Length > 0) { window.AppendLineBreak(); window.AppendHeader("Removed Members"); foreach (string member in removed) { window.AppendHighlight(member); window.AppendLineBreak(); } } this._state = RosterState.Idle; return(true); }