public static string GetPersonUrl <T>(this IBasicEmail mail, T model) where T : OrganizationPersonOutput, new() { var token = FlowExtensions.GetRole(typeof(T)); var path = FlowExtensions.GetPath(typeof(T)); return($"{mail.FlowUrl}{model.TargetOrganizationId}/{token.GetDescription()}/people/{model.PersonId}/peopledetails"); }
public static IHtmlContent ProposalRejected <T>(this IBasicEmail email, T proposal) where T : FixedPriceProposalOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; switch (role) { case FlowRoleToken.Customer: message = $"You have rejected the proposal from {proposal.ProjectManagerOrganizationName}"; break; case FlowRoleToken.AccountManager: case FlowRoleToken.ProjectManager: case FlowRoleToken.AgencyOwner: message = "A proposal has been rejected"; break; } var link = email.GetProposalUrl(proposal); var details = proposal.ProposalDetails(); return(TemplateHelpers.ThreeParagraph(message, link, details)); }
public static string GetInvoiceUrl <T>(this IBasicEmail mail, T model) where T : ProjectInvoiceOutput, new() { var token = FlowExtensions.GetRole(typeof(T)); var path = FlowExtensions.GetPath(typeof(T)); return($"{mail.FlowUrl}{model.TargetOrganizationId}/{token.GetDescription()}/{path}/{model.Id}/invoicedetails"); }
public static IHtmlContent CandidateRejected <T>(this IBasicEmail email, T model) where T : CandidateOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; switch (role) { case FlowRoleToken.Recruiter: message = "Your candidate was rejected"; break; case FlowRoleToken.RecruitingAgencyOwner: message = "Your candidate was rejected"; break; case FlowRoleToken.AgencyOwner: message = "Your candidate was rejected"; break; case FlowRoleToken.AccountManager: message = "Your candidate was rejected"; break; } var link = email.GetCandidateUrl(model); return(TemplateHelpers.TwoParagraph(message, link)); }
public static IHtmlContent LeadQualified <T>(this IBasicEmail email, T model) where T : LeadOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; var streamName = ""; var stream = 0m; var bonus = 0m; var bonusName = ""; switch (role) { case FlowRoleToken.Marketer: bonus = model.MarketerBonus; stream = model.MarketerStream; streamName = "MA Stream"; bonusName = "MA Bonus"; message = "Your lead was qualified"; break; case FlowRoleToken.MarketingAgencyOwner: bonus = model.MarketingAgencyBonus; stream = model.MarketingAgencyStream; streamName = "MAO Stream"; bonusName = "MAO Bonus"; message = "Your marketer's lead was qualified"; break; case FlowRoleToken.AgencyOwner: bonus = model.MarketingBonus; stream = model.MarketingStream; streamName = "Marketing Stream"; bonusName = "Marketing Bonus"; message = "Your lead was successfully assigned"; break; case FlowRoleToken.AccountManager: bonus = model.MarketingBonus; stream = model.MarketingStream; streamName = "Marketing Stream"; bonusName = "Marketing Bonus"; message = "A new Opportunity was assigned to you."; break; case FlowRoleToken.None: break; } var link = email.GetLeadUrl(model); var contractDetails = model.LeadDetails(stream, streamName, bonus, bonusName); return(TemplateHelpers.ThreeParagraph(message, link, contractDetails)); }
public static IHtmlContent CandidateQualified <T>(this IBasicEmail email, T model) where T : CandidateOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; var streamName = ""; var stream = 0m; var bonus = 0m; var bonusName = ""; switch (role) { case FlowRoleToken.Recruiter: bonus = model.RecruiterBonus; stream = model.RecruiterStream; streamName = "RE Stream"; bonusName = "RE Bonus"; message = "Your candidate was qualified"; break; case FlowRoleToken.RecruitingAgencyOwner: bonus = model.RecruitingAgencyBonus; stream = model.RecruitingAgencyStream; streamName = "RAO Stream"; bonusName = "RAO Bonus"; message = "Your candidate was qualified"; break; case FlowRoleToken.AgencyOwner: bonus = model.RecruitingBonus; stream = model.RecruitingStream; streamName = "Recruiting Stream"; bonusName = "Recruiting Bonus"; message = "Your candidate was successfully assigned"; break; case FlowRoleToken.ProjectManager: bonus = 0; stream = 0; streamName = "Recruiting Stream"; bonusName = "Recruiting Bonus"; message = "A new Candidate was assigned to you for screening."; break; } var link = email.GetCandidateUrl(model); var contractDetails = model.CandidateDetails(stream, streamName, bonus, bonusName); return(TemplateHelpers.ThreeParagraph(message, link, contractDetails)); }
public static IHtmlContent ProjectCreated <T>(this IBasicEmail email, T project) where T : ProjectOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; switch (role) { default: message = "A new project was created"; break; } var link = email.GetProjectUrl(project); var details = project.ProjectDetails(); return(TemplateHelpers.ThreeParagraph(message, link, details)); }
public static IHtmlContent InvoiceCreated <T>(this IBasicEmail email, T model) where T : ProjectInvoiceOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; switch (role) { case FlowRoleToken.AccountManager: case FlowRoleToken.AgencyOwner: message = $"A new invoice was created"; break; } var link = email.GetInvoiceUrl(model); return(TemplateHelpers.TwoParagraph(message, link)); }
public static IHtmlContent CandidateCreated <T>(this IBasicEmail email, T model) where T : CandidateOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; var streamName = ""; var stream = 0m; var bonus = 0m; var bonusName = ""; switch (role) { case FlowRoleToken.Recruiter: bonus = model.RecruiterBonus; stream = model.RecruiterStream; streamName = "RE Stream"; bonusName = "RE Bonus"; message = "A new candidate was created"; break; case FlowRoleToken.RecruitingAgencyOwner: bonus = model.RecruitingAgencyBonus; stream = model.RecruitingAgencyStream; streamName = "RAO Stream"; bonusName = "RAO Bonus"; message = "A new candidate was created by one of your organization's recruiters"; break; case FlowRoleToken.AgencyOwner: bonus = model.RecruitingBonus; stream = model.RecruitingStream; streamName = "Recruiting Stream"; bonusName = "Recruiting Bonus"; message = "You have a new candidate ready to be qualified"; break; } var link = email.GetCandidateUrl(model); var contractDetails = model.CandidateDetails(stream, streamName, bonus, bonusName); return(TemplateHelpers.ThreeParagraph(message, link, contractDetails)); }
public static IHtmlContent LeadCreated <T>(this IBasicEmail email, T model) where T : LeadOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; var streamName = ""; var stream = 0m; var bonus = 0m; var bonusName = ""; switch (role) { case FlowRoleToken.Marketer: bonus = model.MarketerBonus; stream = model.MarketerStream; streamName = "MA Stream"; bonusName = "MA Bonus"; message = "A new lead was created"; break; case FlowRoleToken.MarketingAgencyOwner: bonus = model.MarketingAgencyBonus; stream = model.MarketingAgencyStream; streamName = "MAO Stream"; bonusName = "MAO Bonus"; message = "A new lead was created"; break; case FlowRoleToken.AgencyOwner: bonus = model.MarketingBonus; stream = model.MarketingStream; streamName = "Marketing Stream"; bonusName = "Marketing Bonus"; message = "You have a new lead"; break; } var link = email.GetLeadUrl(model); var contractDetails = model.LeadDetails(stream, streamName, bonus, bonusName); return(TemplateHelpers.ThreeParagraph(message, link, contractDetails)); }
public static IHtmlContent StoryCompleted <T>(this IBasicEmail email, T story) where T : StoryOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; switch (role) { case FlowRoleToken.AccountManager: case FlowRoleToken.ProjectManager: case FlowRoleToken.AgencyOwner: message = "A story has been completed"; break; } var link = email.GetStoryUrl(story); var contractDetails = story.StoryDetails(); return(TemplateHelpers.ThreeParagraph(message, link, contractDetails)); }
public static IHtmlContent WorkOrderRejected <T>(this IBasicEmail email, T entry) where T : WorkOrderOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; switch (role) { default: message = $"Your work order was rejected"; break; } var link = email.GetWorkOrderUrl(entry); var workEntryDetails = entry.WorkOrderDetails(); return(TemplateHelpers.ThreeParagraph(message, link, workEntryDetails)); }
public static IHtmlContent ContractRestarted <T>(this IBasicEmail email, T model) where T : ContractOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; switch (role) { case FlowRoleToken.Contractor: message = $"Your contact was restarted"; break; default: message = "A contract was ended"; break; } var link = email.GetContractUrl(model); return(TemplateHelpers.TwoParagraph(message, link)); }
public static IHtmlContent StoryCreated <T>(this IBasicEmail email, T story) where T : StoryOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; switch (role) { case FlowRoleToken.AgencyOwner: message = "A story was created in your organization"; break; default: message = "A new story was created"; break; } var link = email.GetStoryUrl(story); var contractDetails = story.StoryDetails(); return(TemplateHelpers.ThreeParagraph(message, link, contractDetails)); }
public static IHtmlContent InvoiceFinalized <T>(this IBasicEmail email, T model) where T : ProjectInvoiceOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; switch (role) { case FlowRoleToken.Customer: message = $"You have a new invoice from {model.ProviderOrganizationName}"; break; case FlowRoleToken.AccountManager: case FlowRoleToken.AgencyOwner: message = $"Invoice: {model.Number} was sent to {model.CustomerOrganizationName}"; break; } var link = email.GetInvoiceUrl(model); return(TemplateHelpers.TwoParagraph(message, link)); }
public static IHtmlContent ProposalSent <T>(this IBasicEmail email, T proposal) where T : FixedPriceProposalOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; switch (role) { case FlowRoleToken.Customer: message = "You have a new proposal"; break; case FlowRoleToken.AccountManager: case FlowRoleToken.ProjectManager: message = "The proposal was sent"; break; case FlowRoleToken.AgencyOwner: message = "A proposal has sent to your customer"; break; } var link = string.Empty; if (role == FlowRoleToken.Customer) { link = email.GetPublicProposalUrl(proposal); } else { link = email.GetProposalUrl(proposal); } var details = proposal.ProposalDetails(); return(TemplateHelpers.ThreeParagraph(message, link, details)); }
public static IHtmlContent WorkOrderCreated <T>(this IBasicEmail email, T entry) where T : WorkOrderOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; switch (role) { case FlowRoleToken.Customer: message = $"You submitted a work order to {entry.AccountManagerOrganizationName}"; break; default: message = "A new Work Order was created"; break; } var link = email.GetWorkOrderUrl(entry); var workEntryDetails = entry.WorkOrderDetails(); return(TemplateHelpers.ThreeParagraph(message, link, workEntryDetails)); }
public static IHtmlContent TimeEntryApproved <T>(this IBasicEmail email, T entry) where T : TimeEntryOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = ""; var streamName = ""; var stream = 0m; switch (role) { case FlowRoleToken.Contractor: stream = entry.TotalContractorStream; streamName = "CO Stream"; message = $"Your time entry was approved"; break; case FlowRoleToken.AccountManager: stream = entry.TotalAccountManagerStream; streamName = "AM Stream"; message = $"A time entry of {entry.TotalHours.ToString("N2")} Hours was approved"; break; case FlowRoleToken.ProjectManager: stream = entry.TotalProjectManagerStream; streamName = "PM Stream"; message = $"A time entry of {entry.TotalHours.ToString("N2")} Hours was approved"; break; case FlowRoleToken.AgencyOwner: stream = entry.TotalAgencyStream; streamName = "AO Stream"; message = $"A time entry of {entry.TotalHours.ToString("N2")} Hours was approved"; break; case FlowRoleToken.Customer: stream = entry.TotalCustomerAmount; streamName = "Amount"; message = $"A time entry of {entry.TotalHours.ToString("N2")} Hours was approved"; break; case FlowRoleToken.Recruiter: stream = entry.TotalRecruiterStream; streamName = "RE Stream"; message = $"A time entry of {entry.TotalHours.ToString("N2")} Hours was approved"; break; case FlowRoleToken.Marketer: stream = entry.TotalMarketerStream; streamName = "MA Stream"; message = $"A time entry of {entry.TotalHours.ToString("N2")} Hours was approved"; break; case FlowRoleToken.MarketingAgencyOwner: stream = entry.TotalMarketingAgencyStream; streamName = "MAO Stream"; message = $"A time entry of {entry.TotalHours.ToString("N2")} Hours was approved"; break; case FlowRoleToken.RecruitingAgencyOwner: stream = entry.TotalRecruitingAgencyStream; streamName = "RAO Stream"; message = $"A time entry of {entry.TotalHours.ToString("N2")} Hours was approved"; break; } var link = email.GetTimeEntryUrl(entry); var timeDetails = entry.TimeEntryDetails(stream, streamName); return(TemplateHelpers.ThreeParagraph(message, link, timeDetails)); }
public static IHtmlContent WorkOrderDetails <T>(this T model) where T : WorkOrderOutput, new() { int number = model.ProviderNumber; var role = FlowExtensions.GetRole(typeof(T)); switch (role) { case FlowRoleToken.Customer: number = model.BuyerNumber; break; } var table = new TagBuilder("table"); table.Attributes["border"] = "1"; table.MergeAttribute( "style", $"border-collapse: collapse;border: 1px solid black"); var headers = new TagBuilder("tr"); headers.MergeAttribute( "style", RowHeaderStyle); var cells = new TagBuilder("tr"); cells.MergeAttribute("style", RowCellsStyle); var accountManagerHeader = new TagBuilder("th"); accountManagerHeader.MergeAttribute( "style", ColumnHeaderStyle); var numberHeader = new TagBuilder("th"); accountManagerHeader.MergeAttribute( "style", ColumnHeaderStyle); var customerHeader = new TagBuilder("th"); customerHeader.MergeAttribute( "style", ColumnHeaderStyle); var accountManagerCell = new TagBuilder("td"); accountManagerCell.MergeAttribute( "style", CellStyle); var numberCell = new TagBuilder("td"); accountManagerCell.MergeAttribute( "style", CellStyle); var customerCell = new TagBuilder("td"); customerCell.MergeAttribute( "style", CellStyle); accountManagerCell.InnerHtml.Append($"{model.AccountManagerName}"); customerCell.InnerHtml.Append($"{model.CustomerName}"); numberCell.InnerHtml.Append($"{number}"); accountManagerHeader.InnerHtml.Append($"AM [{model.AccountManagerOrganizationName}]"); customerHeader.InnerHtml.Append($"CU [{model.CustomerOrganizationName}]"); numberHeader.InnerHtml.Append($"Number"); headers.InnerHtml.AppendHtml(numberHeader); headers.InnerHtml.AppendHtml(accountManagerHeader); headers.InnerHtml.AppendHtml(customerHeader); cells.InnerHtml.AppendHtml(numberCell); cells.InnerHtml.AppendHtml(accountManagerCell); cells.InnerHtml.AppendHtml(customerCell); table.InnerHtml.AppendHtml(headers); table.InnerHtml.AppendHtml(cells); return(table); }
public static IHtmlContent LeadDetails <T>(this T lead, decimal stream, string streamName, decimal bonus, string bonusName) where T : LeadOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var table = new TagBuilder("table"); var cells = new TagBuilder("tr"); var headers = new TagBuilder("tr"); table.Attributes["border"] = "1"; table.MergeAttribute( "style", TableStyle); headers.MergeAttribute( "style", RowHeaderStyle); cells.MergeAttribute( "style", RowCellsStyle); var customerHeader = new TagBuilder("th"); customerHeader.MergeAttribute("style", ColumnHeaderStyle); var customerCell = new TagBuilder("td"); customerCell.MergeAttribute("style", CellStyle); var bonusHeader = new TagBuilder("th"); bonusHeader.MergeAttribute("style", ColumnHeaderStyle); var streamHeader = new TagBuilder("th"); streamHeader.MergeAttribute("style", ColumnHeaderStyle); var marketerHeader = new TagBuilder("th"); marketerHeader.MergeAttribute("style", ColumnHeaderStyle); var bonusCell = new TagBuilder("td"); bonusCell.MergeAttribute("style", CellStyle); var streamCell = new TagBuilder("td"); streamCell.MergeAttribute("style", CellStyle); var marketerCell = new TagBuilder("td"); marketerCell.MergeAttribute("style", CellStyle); headers.InnerHtml.AppendHtml(customerHeader); headers.InnerHtml.AppendHtml(bonusHeader); headers.InnerHtml.AppendHtml(streamHeader); headers.InnerHtml.AppendHtml(marketerHeader); cells.InnerHtml.AppendHtml(customerCell); cells.InnerHtml.AppendHtml(bonusCell); cells.InnerHtml.AppendHtml(streamCell); cells.InnerHtml.AppendHtml(marketerCell); bonusCell.InnerHtml.Append(bonus.ToString("C")); marketerCell.InnerHtml.Append(lead.MarketerName); bonusHeader.InnerHtml.Append(bonusName); streamCell.InnerHtml.Append(stream.ToString("C")); marketerHeader.InnerHtml.Append($"Marketer [{lead.MarketerOrganizationName}]"); streamHeader.InnerHtml.Append(streamName); customerHeader.InnerHtml.Append("Lead Name"); customerCell.InnerHtml.Append($"{lead.FirstName} {lead.LastName} ({lead.OrganizationName})"); table.InnerHtml.AppendHtml(headers); table.InnerHtml.AppendHtml(cells); return(table); }
public static IHtmlContent ContractCreated <T>(this IBasicEmail email, T model) where T : ContractOutput, new() { var role = FlowExtensions.GetRole(typeof(T)); var message = $"A new contract was added, see the terms below"; decimal rate = 0; string streamName = "CO"; switch (role) { case FlowRoleToken.Contractor: rate = model.ContractorStream; streamName = "Hourly Rate (CO Stream)"; message = $@"You have been added to a project. The terms of the contract below:"; break; case FlowRoleToken.AgencyOwner: rate = model.AgencyStream; streamName = "PAO Stream"; break; case FlowRoleToken.AccountManager: rate = model.AccountManagerStream; streamName = "AM Stream"; break; case FlowRoleToken.ProjectManager: rate = model.ProjectManagerStream; streamName = "PM Stream"; break; case FlowRoleToken.Customer: rate = model.CustomerRate; streamName = "Hourly Rate"; break; case FlowRoleToken.Recruiter: rate = model.ContractorStream; streamName = "RE Stream"; break; case FlowRoleToken.Marketer: rate = model.ContractorStream; message = $"Your contractor, {model.ContractorName}, been added to a project"; streamName = "MA Stream"; break; case FlowRoleToken.MarketingAgencyOwner: rate = model.ContractorStream; streamName = "MAO Stream"; break; case FlowRoleToken.RecruitingAgencyOwner: rate = model.ContractorStream; streamName = "RAO Stream"; break; } var link = email.GetContractUrl(model); var contractDetails = model.ContractDetails(rate, streamName); return(TemplateHelpers.ThreeParagraph(message, link, contractDetails)); }