/// <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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 7
0
        /// <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);
                }
            }
        }
Exemplo n.º 9
0
        /// <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());
                }
            }
        }