/// <summary> /// Selects the map by id. /// </summary> /// <param name="portalSettingsId">The portal settings id.</param> /// <param name="fromCache">if set to <c>true</c> [from cache].</param> /// <returns></returns> public PortalSettingsMap SelectMapById(Guid portalSettingsId, bool fromCache) { var key = string.Format("{0}_SelectMapById_{1}", CacheKey, portalSettingsId); var cacheItem = fromCache ? LeadForceCache.Cache[key] : null; if (cacheItem != null) { return((PortalSettingsMap)cacheItem); } PortalSettingsMap portalSettings = _dataContext.tbl_PortalSettings.Select(ps => new PortalSettingsMap() { ID = ps.ID, SiteID = ps.SiteID, Domain = ps.Domain, Logo = ps.Logo, CompanyMessage = ps.CompanyMessage, HeaderTemplate = ps.HeaderTemplate, Title = ps.Title, WelcomeMessage = ps.WelcomeMessage, MainMenuBackground = ps.MainMenuBackground, BlockTitleBackground = ps.BlockTitleBackground }).SingleOrDefault(c => c.ID == portalSettingsId); LeadForceCache.CacheData(key, portalSettings, 60); return(portalSettings); }
/// <summary> /// Selects the by domain. /// </summary> /// <param name="domain">The domain.</param> /// <param name="fromCache">if set to <c>true</c> [from cache].</param> /// <returns></returns> public PortalSettingsMap SelectMapByDomain(string domain, bool fromCache = false) { var key = string.Format("{0}_SelectMapByDomain_{1}", CacheKey, domain); var cacheItem = fromCache ? LeadForceCache.Cache[key] : null; if (cacheItem != null) { return((PortalSettingsMap)cacheItem); } PortalSettingsMap portalSettings = null; portalSettings = _dataContext.tbl_PortalSettings.Select(ps => new PortalSettingsMap() { ID = ps.ID, SiteID = ps.SiteID, Domain = ps.Domain, Logo = ps.Logo, CompanyMessage = ps.CompanyMessage, HeaderTemplate = ps.HeaderTemplate, Title = ps.Title, WelcomeMessage = ps.WelcomeMessage }).FirstOrDefault(c => c.Domain.ToLower() == domain.ToLower()); LeadForceCache.CacheData(key, portalSettings, 300); return(portalSettings); }
/// <summary> /// Replaces the specified subject. /// </summary> /// <param name="subject">The subject.</param> /// <param name="body">The body.</param> public override void Replace(ref string subject, ref string body) { if (!SiteAction.ObjectID.HasValue) { return; } PortalSettings = DataManager.PortalSettings.SelectMapBySiteId(SiteAction.SiteID, true); ReplaceUserInfo(ref body); if (PortalSettings != null) { PortalLink = DataManager.PortalSettings.SelectPortalLink(PortalSettings.SiteID); RequirementLinkTemplate = RequirementLinkTemplate.Replace("#PortalLink#", PortalLink); } var requirementComment = ContentCommentRepository.SelectById(SiteAction.SiteID, (Guid)SiteAction.ObjectID, CommentTables.tbl_RequirementComment); var requirement = DataManager.Requirement.SelectById(SiteAction.SiteID, requirementComment.ContentID); if (requirement == null) { return; } if (requirement.CompanyID.HasValue) { subject = subject.Replace("#Requirement.Notification.Company#", requirement.tbl_Company.Name); body = body.Replace("#Requirement.Notification.Company#", requirement.tbl_Company.Name); } else { subject = subject.Replace("#Requirement.Notification.Company#", string.Empty); body = body.Replace("#Requirement.Notification.Company#", string.Empty); } var replyLink = "Ответить"; var shortDescription = requirement.ShortDescription; if (PortalSettings != null) { var requirementLink = string.Format(RequirementLinkTemplate, requirement.ID); replyLink = string.Format("<a href='{0}'>Ответить</a>", requirementLink); shortDescription = string.Format("<a href='{0}'>{1}</a>", requirementLink, shortDescription); } body = body.Replace("#Requirement.ShortDescription#", shortDescription) .Replace("#Requirement.Comment#", requirementComment.Comment) .Replace("#Requirement.Comment.ReplyLink#", replyLink); }
protected void Page_Load(object sender, EventArgs e) { RadAjaxManager.GetCurrent(Page).AjaxSettings.AddAjaxSetting(FindControl("ucLoggedAs", Page.Controls), FindControl("ucMainMenu", Page.Controls), null, UpdatePanelRenderMode.Inline); PortalSettings = ((LeadForcePortalBasePage)Page).PortalSettings; Page.Header.DataBind(); ((Literal)FindControl("lrlHeader", Page.Controls)).Text = ((LeadForcePortalBasePage)Page).PortalSettings.HeaderTemplate; if (CurrentUser.Instance != null) { if (string.IsNullOrEmpty(CurrentUser.Instance.Password) && !Page.GetType().Name.ToLower().Contains("default")) { Response.Redirect(UrlsData.LFP_Home(((LeadForcePortalBasePage)Page).PortalSettingsId)); } LabitecPage.UserID = CurrentUser.Instance.ID; LabitecPage.SiteID = CurrentUser.Instance.SiteID; } }
/// <summary> /// Replaces the specified subject. /// </summary> /// <param name="subject">The subject.</param> /// <param name="body">The body.</param> public override void Replace(ref string subject, ref string body) { if (!SiteAction.ObjectID.HasValue) { return; } PortalSettings = DataManager.PortalSettings.SelectMapBySiteId(SiteAction.SiteID, true); ReplaceUserInfo(ref body); if (PortalSettings != null) { PortalLink = DataManager.PortalSettings.SelectPortalLink(PortalSettings.SiteID); RequestLinkTemplate = RequestLinkTemplate.Replace("#PortalLink#", PortalLink); } var invoiceComment = ContentCommentRepository.SelectById(SiteAction.SiteID, (Guid)SiteAction.ObjectID, CommentTables.tbl_InvoiceComment); var invoice = DataManager.Invoice.SelectById(SiteAction.SiteID, invoiceComment.ContentID); if (invoice == null) { return; } subject = subject.Replace("#Invoice.Number#", invoice.Number).Replace("#Invoice.CreatedAt#", invoice.CreatedAt.ToString("dd.MM.yyyy")); body = body.Replace("#Invoice.Number#", invoice.Number).Replace("#Invoice.CreatedAt#", invoice.CreatedAt.ToString("dd.MM.yyyy")).Replace("#Invoice.Comment#", invoiceComment.Comment); if (invoice.BuyerCompanyID.HasValue) { var company = DataManager.Company.SelectById(SiteAction.SiteID, invoice.BuyerCompanyID.Value); subject = subject.Replace("#Invoice.Notification.Company#", company.Name); body = body.Replace("#Invoice.Notification.Company#", company.Name); } else { subject = subject.Replace("#Invoice.Notification.Company#", string.Empty); body = body.Replace("#Invoice.Notification.Company#", string.Empty); } }
/// <summary> /// Selects the by site id. /// </summary> /// <param name="siteId">The site id.</param> /// <param name="fromCache">if set to <c>true</c> [from cache].</param> /// <returns></returns> public PortalSettingsMap SelectMapBySiteId(Guid siteId, bool fromCache) { var key = string.Format("{0}_SelectMapBySiteId_{1}", CacheKey, siteId); var cacheItem = fromCache ? LeadForceCache.Cache[key] : null; if (cacheItem != null) { return((PortalSettingsMap)cacheItem); } var tblPortalSettings = _dataContext.tbl_PortalSettings.FirstOrDefault(c => c.SiteID == siteId && !string.IsNullOrEmpty(c.Domain)) ?? _dataContext.tbl_PortalSettings.FirstOrDefault(c => c.SiteID == siteId); PortalSettingsMap portalSettings = null; if (tblPortalSettings != null) { portalSettings = new PortalSettingsMap() { ID = tblPortalSettings.ID, SiteID = tblPortalSettings.SiteID, Domain = tblPortalSettings.Domain, Logo = tblPortalSettings.Logo, CompanyMessage = tblPortalSettings.CompanyMessage, HeaderTemplate = tblPortalSettings.HeaderTemplate, Title = tblPortalSettings.Title, WelcomeMessage = tblPortalSettings.WelcomeMessage, MainMenuBackground = tblPortalSettings.MainMenuBackground, BlockTitleBackground = tblPortalSettings.BlockTitleBackground } } ; LeadForceCache.CacheData(key, portalSettings, 60); return(portalSettings); }
/// <summary> /// Searches the publication. /// </summary> /// <param name="siteId">The site id.</param> /// <param name="contactId">The contact id.</param> /// <param name="publicationKind">Kind of the publication.</param> /// <param name="text">The text.</param> /// <param name="pageIndex">Index of the page.</param> /// <param name="totalCount">The total count.</param> /// <param name="portalSettingsId">The portal settings id.</param> /// <param name="publicationType">Type of the publication.</param> /// <param name="initUrls">if set to <c>true</c> [init urls].</param> /// <param name="isPortal">if set to <c>true</c> [is portal].</param> /// <returns></returns> public List <ActivityPublicationMap> SearchPublication(Guid siteId, Guid?contactId, int?publicationKind, string text, int pageIndex, out int totalCount, Guid?portalSettingsId = null, Guid?publicationType = null, bool initUrls = true, bool isPortal = false) { var publicationMaps = new List <ActivityPublicationMap>(); totalCount = 0; using (var connection = new SqlConnection(Settings.ADONetConnectionString)) { connection.Open(); var command = new SqlCommand("SearchPublication", connection) { CommandType = CommandType.StoredProcedure }; command.Parameters.AddWithValue("@SiteID", siteId); command.Parameters.AddWithValue("@ContactID", contactId); command.Parameters.AddWithValue("@Word", string.IsNullOrEmpty(text) ? "*" : text); command.Parameters.AddWithValue("@PageIndex", pageIndex); command.Parameters.AddWithValue("@PageSize", 5); command.Parameters.AddWithValue("@IsPortal", portalSettingsId.HasValue || isPortal); if (publicationKind != -1) { command.Parameters.AddWithValue("@PublicationKindID", publicationKind); } command.Parameters.AddWithValue("@PublicationTypeID", publicationType); var reader = command.ExecuteReader(); while (reader.HasRows) { while (reader.Read()) { var publicationMap = new ActivityPublicationMap { ID = (Guid)reader["ID"], Date = (DateTime)reader["Date"], Title = (string)reader["Title"], Text = reader["Text"] != DBNull.Value ? (string)reader["Text"] : null, Noun = reader["Noun"] != DBNull.Value ? (string)reader["Noun"] : null, PublicationKindID = reader["PublicationKindID"] != DBNull.Value ? (int?)reader["PublicationKindID"] : null }; totalCount = (int)reader["TotalCount"]; publicationMaps.Add(publicationMap); } reader.NextResult(); } } var dataManager = new DataManager(); PortalSettingsMap portalSettings = null; if (!portalSettingsId.HasValue) { portalSettings = dataManager.PortalSettings.SelectMapBySiteId(siteId, true); } foreach (var publicationMap in publicationMaps) { if (string.IsNullOrEmpty(publicationMap.Noun)) { publicationMap.Noun = publicationMap.Text; publicationMap.Text = string.Empty; } publicationMap.Noun = publicationMap.Noun.Truncate(300, true, true); if (initUrls) { if (portalSettingsId.HasValue) { if (publicationMap.PublicationKindID == (int)PublicationKind.Discussion) { publicationMap.PublicationUrl = UrlsData.LFP_Discussion((Guid)portalSettingsId, publicationMap.ID); } else { publicationMap.PublicationUrl = UrlsData.LFP_Article((Guid)portalSettingsId, publicationMap.ID); } } else { publicationMap.PublicationUrl = UrlsData.AP_PublicationEdit(publicationMap.ID, "Materials"); } if (portalSettings != null) { publicationMap.PortalUrl = string.Concat(Settings.LabitecLeadForcePortalUrl, string.Format("/{0}/KnowledgeBase/Article/{1}", portalSettings.ID, publicationMap.ID)); } } } return(publicationMaps); }
/// <summary> /// Replaces the specified subject. /// </summary> /// <param name="subject">The subject.</param> /// <param name="body">The body.</param> public override void Replace(ref string subject, ref string body) { if (!SiteAction.ObjectID.HasValue) { return; } PortalSettings = DataManager.PortalSettings.SelectMapBySiteId(SiteAction.SiteID, true); ReplaceUserInfo(ref body); var printLink = string.Empty; var invoice = DataManager.Invoice.SelectById(SiteAction.SiteID, (Guid)SiteAction.ObjectID); if (invoice != null) { if (PortalSettings != null) { PortalLink = DataManager.PortalSettings.SelectPortalLink(PortalSettings.SiteID, true); printLink = string.Format(InvoicePrintLinkTemplate.Replace("#PortalLink#", PortalLink), invoice.ID); } body = body.Replace("#Invoice.PrintVersion.Link#", printLink); if (SiteAction.tbl_SiteActionAttachment.Any()) { var siteActionAttacment = SiteAction.tbl_SiteActionAttachment.FirstOrDefault(); siteActionAttacment.FileName = printLink + "?autoexport=pdf"; DataManager.SiteActionAttachment.Update(siteActionAttacment); var webClient = new WebClient(); var file = webClient.DownloadData(SiteAction.tbl_SiteActionAttachment.First().FileName); MailMessage.Attachments.Add(new Attachment(new MemoryStream(file), string.Format("Счет #{0}.pdf", invoice.Number), MediaTypeNames.Application.Pdf)); } if (invoice.ExecutorContactID.HasValue) { var contact = DataManager.Contact.SelectById(SiteAction.SiteID, invoice.ExecutorContactID.Value); subject = subject.Replace("#Invoice.Executor.UserFullName#", contact.UserFullName).Replace("#Invoice.Executor.Phone#", contact.Phone); body = body.Replace("#Invoice.Executor.UserFullName#", contact.UserFullName).Replace("#Invoice.Executor.Phone#", contact.Phone); } else { subject = subject.Replace("#Invoice.Executor.UserFullName#", string.Empty).Replace("#Invoice.Executor.Phone#", string.Empty); body = body.Replace("#Invoice.Executor.UserFullName#", string.Empty).Replace("#Invoice.Executor.Phone#", string.Empty); } tbl_Company company = null; if (invoice.ExecutorContactID.HasValue) { var executorContact = DataManager.Contact.SelectById(SiteAction.SiteID, invoice.ExecutorContactID.Value); MailMessage.Bcc.Add(new MailAddress(executorContact.Email, executorContact.UserFullName)); } if (invoice.BuyerCompanyID.HasValue) { company = DataManager.Company.SelectById(SiteAction.SiteID, invoice.BuyerCompanyID.Value); } if (company != null) { body = body.Replace("#Invoice.Notification.Company#", company.Name); subject = subject.Replace("#Invoice.Notification.Company#", company.Name); } else { body = body.Replace("#Invoice.Notification.Company#", string.Empty); subject = subject.Replace("#Invoice.Notification.Company#", string.Empty); } } if (body.Contains("#Invoice.PayableList#")) { var serviceLevelContact = DataManager.ServiceLevelContact.SelectById((Guid)SiteAction.ObjectID); if (serviceLevelContact != null) { body = body.Replace("#Invoice.Notification.Company#", serviceLevelContact.tbl_ServiceLevelClient.tbl_Company.Name); subject = subject.Replace("#Invoice.Notification.Company#", serviceLevelContact.tbl_ServiceLevelClient.tbl_Company.Name); ProceedInvoices(ref body, DataManager.Invoice.SelectByBuyerCompanyId(serviceLevelContact.tbl_ServiceLevelClient.ClientID).Where(o => o.InvoiceStatusID == (int)InvoiceStatus.PartialPaid || o.InvoiceStatusID == (int)InvoiceStatus.PendingPayment), serviceLevelContact); } } }
/// <summary> /// Replaces the specified subject. /// </summary> /// <param name="subject">The subject.</param> /// <param name="body">The body.</param> public override void Replace(ref string subject, ref string body) { if (!SiteAction.ObjectID.HasValue) { return; } PortalSettings = DataManager.PortalSettings.SelectMapBySiteId(SiteAction.SiteID, true); ReplaceUserInfo(ref body); if (PortalSettings != null) { PortalLink = DataManager.PortalSettings.SelectPortalLink(PortalSettings.SiteID); RequirementLinkTemplate = RequirementLinkTemplate.Replace("#PortalLink#", PortalLink); RequestLinkTemplate = RequestLinkTemplate.Replace("#PortalLink#", PortalLink); } var request = DataManager.Request.SelectById(SiteAction.SiteID, (Guid)SiteAction.ObjectID); if (request != null) { var serviceLevel = request.tbl_ServiceLevel; tbl_Contact responsible = null; tbl_Contact contact = null; tbl_Company company = null; if (request.ResponsibleID.HasValue) { responsible = DataManager.Contact.SelectById(SiteAction.SiteID, (Guid)request.ResponsibleID); } if (request.ContactID.HasValue) { contact = DataManager.Contact.SelectById(SiteAction.SiteID, (Guid)request.ContactID); } company = request.tbl_Company; subject = ReplaceText(subject, request, serviceLevel, responsible, contact, company); body = ReplaceText(body, request, serviceLevel, responsible, contact, company); if (body.Contains("#Requirement.RegisteredList#")) { var requirements = DataManager.Requirement.SelectByRequestId(request.SiteID, request.ID); ProceedRegisteredRequirements(ref body, requirements); } if (company != null) { body = body.Replace("#Request.Notification.Company#", company.Name); subject = subject.Replace("#Request.Notification.Company#", company.Name); } else { body = body.Replace("#Request.Notification.Company#", string.Empty); subject = subject.Replace("#Request.Notification.Company#", string.Empty); } } var requirement = DataManager.Requirement.SelectById(SiteAction.SiteID, (Guid)SiteAction.ObjectID); if (requirement != null) { var shortDescription = requirement.ShortDescription; var requirementLink = string.Format(RequirementLinkTemplate, requirement.ID); shortDescription = string.Format("<a href='{0}'>{1}</a>", requirementLink, shortDescription); body = body.Replace("#Requirement.ShortDescription#", shortDescription); if (requirement.CompanyID.HasValue) { body = body.Replace("#Requirement.Notification.Company#", requirement.tbl_Company.Name); subject = subject.Replace("#Requirement.Notification.Company#", requirement.tbl_Company.Name); } else { body = body.Replace("#Requirement.Notification.Company#", string.Empty); subject = subject.Replace("#Requirement.Notification.Company#", string.Empty); } } if (((body.Contains("#Requirement.WorkedList#") || body.Contains("#Requirement.CompanyList#") || body.Contains("#Requirement.CompletedList#")) && SiteAction.ContactID.HasValue)) { var serviceLevelContact = DataManager.ServiceLevelContact.SelectById((Guid)SiteAction.ObjectID); if (serviceLevelContact != null) { body = body.Replace("#Requirement.Notification.Company#", serviceLevelContact.tbl_ServiceLevelClient.tbl_Company.Name); subject = subject.Replace("#Requirement.Notification.Company#", serviceLevelContact.tbl_ServiceLevelClient.tbl_Company.Name); var startDate = SiteAction.ActionDate.Date; var endDate = SiteAction.ActionDate.Date; RequestNotificationService.GetDatesRangeByServiceLevelContact(serviceLevelContact, SiteAction.ActionDate.Date, ref startDate, ref endDate); var requirements = new List <tbl_Requirement>(); switch ((ServiceLevelIncludeToInform)serviceLevelContact.IncludeToInformID) { case ServiceLevelIncludeToInform.All: requirements = DataManager.Requirement.SelectAllByCompanyId(serviceLevelContact.tbl_ServiceLevelClient.ClientID, startDate, endDate).ToList(); break; case ServiceLevelIncludeToInform.Personal: requirements = DataManager.Requirement.SelectPersonal(serviceLevelContact.ContactID, startDate, endDate).ToList(); break; } body = body.Replace("#Requirement.CompanyList#", string.Empty); ProceedWorkedRequirements(ref body, requirements.Where(o => !o.tbl_RequirementStatus.IsLast).ToList(), startDate, endDate); ProceedCompletedRequirements(ref body, requirements.Where(o => o.tbl_RequirementStatus.IsLast).ToList()); } } }