Exemple #1
0
        public static ContentComment LeaveComment(string contentId, string commentText, string destinationUserId, string replyToCommentId, string fileName, string commentType)
        {
            try
            {
                var guidDestinationUserId = !string.IsNullOrEmpty(destinationUserId)
                                                ? (Guid?)Guid.Parse(destinationUserId)
                                                : null;

                var guidReplyToCommentId = !string.IsNullOrEmpty(replyToCommentId)
                                                ? (Guid?)Guid.Parse(replyToCommentId)
                                                : null;
                commentText = commentText.Replace("\n", "#@#");
                commentText = Sanitizer.GetSafeHtmlFragment(commentText);
                commentText = commentText.Replace("\r\n", "")
                              .Replace("<p><br></p>", "")
                              .Replace("#@#", "\n");

                var publicationCommentMap = ContentCommentRepository.Add(CurrentUser.Instance.SiteID, CurrentUser.Instance.ID, Guid.Parse(contentId),
                                                                         commentText, guidDestinationUserId, guidReplyToCommentId, fileName,
                                                                         commentType.ToEnum <CommentTables>());

                return(publicationCommentMap);
            }
            catch (Exception ex)
            {
                Log.Error(string.Format("ContentComment LeaveComment({0}, {1})", contentId, commentText), ex);
                return(null);
            }
        }
Exemple #2
0
        /// <summary>
        /// Handles the OnClick event of the lbtnUpdateNotFulfilledLiabilities control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        protected void lbtnUpdateNotFulfilledLiabilities_OnClick(object sender, EventArgs e)
        {
            var invoice = DataManager.Invoice.SelectById(CurrentUser.Instance.SiteID, ObjectId);

            if (invoice != null)
            {
                var commentText =
                    string.Format("Не выполнены обязательства Исполнителя для оплаты счета. Причины: {0}", txtNotFulfilledLiabilities.Text);

                ContentCommentRepository.Add(CurrentUser.Instance.SiteID, CurrentUser.Instance.ID, invoice.ID, commentText, null,
                                             null, string.Empty, CommentTables.tbl_InvoiceComment);

                invoice.IsExistBuyerComplaint = true;

                DataManager.Invoice.Update(invoice);
            }

            txtNotFulfilledLiabilities.Text = string.Empty;

            ucNotificationMessage.Text = "Комментарий успешно добавлен.";

            if (!Page.ClientScript.IsStartupScriptRegistered("CloseNotFulfilledLiabilitiesRadWindow"))
            {
                ScriptManager.RegisterStartupScript(Page, typeof(Page), "CloseNotFulfilledLiabilitiesRadWindow",
                                                    "CloseNotFulfilledLiabilitiesRadWindow();", true);
            }
        }
Exemple #3
0
        /// <summary>
        /// Handles the OnClick event of the lbtnUpdatePostponePaymentDate control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        protected void lbtnUpdatePostponePaymentDate_OnClick(object sender, EventArgs e)
        {
            var invoice = DataManager.Invoice.SelectById(CurrentUser.Instance.SiteID, ObjectId);

            if (invoice != null)
            {
                var commentText =
                    string.Format("Перенесена дата оплаты с {0} на {1}. Причины: {2}", invoice.PaymentDatePlanned.HasValue ? invoice.PaymentDatePlanned.Value.ToString("dd.MM.yyyy") : "[Дата не установлена]",
                                  rdpInvoicePlannedPaymentDate.SelectedDate.Value.ToString("dd.MM.yyyy"),
                                  txtCommentForManager.Text);

                ContentCommentRepository.Add(CurrentUser.Instance.SiteID, CurrentUser.Instance.ID, invoice.ID, commentText, null,
                                             null, string.Empty, CommentTables.tbl_InvoiceComment);

                invoice.PaymentDatePlanned = rdpInvoicePlannedPaymentDate.SelectedDate;

                lrlPaymentDatePlanned.Text = rdpInvoicePlannedPaymentDate.SelectedDate.Value.ToString("dd.MM.yyyy");

                DataManager.Invoice.Update(invoice);
            }

            rdpInvoicePlannedPaymentDate.SelectedDate = null;
            txtCommentForManager.Text = string.Empty;

            ucNotificationMessage.Text = "Дата оплаты успешно перенесена.";

            if (!Page.ClientScript.IsStartupScriptRegistered("ClosePostponePaymentDateRadWindow"))
            {
                ScriptManager.RegisterStartupScript(Page, typeof(Page), "ClosePostponePaymentDateRadWindow",
                                                    "ClosePostponePaymentDateRadWindow();", true);
            }
        }
Exemple #4
0
 public static IEnumerable <ContentComment> GetComments(string contentId, string commentType)
 {
     try
     {
         var result = ContentCommentRepository.GetComments(CurrentUser.Instance, Guid.Parse(contentId), commentType.ToEnum <CommentTables>()).OrderByDescending(c => c.CreatedAt).ToList();
         return(result);
     }
     catch (Exception ex)
     {
         Log.Error(string.Format("Comments GetComment({0}, {1})", contentId, commentType), ex);
         return(null);
     }
 }
Exemple #5
0
 public static IEnumerable <ContentCommentAuthor> GetContentCommentAuthors(string contentId, string commentType)
 {
     try
     {
         var result = ContentCommentRepository.SelectContentCommentAuthors(CurrentUser.Instance.SiteID, Guid.Parse(contentId), commentType.ToEnum <CommentTables>());
         return(result);
     }
     catch (Exception ex)
     {
         Log.Error(string.Format("Comments GetContentCommentAuthors({0}, {1})", contentId, commentType), ex);
         return(null);
     }
 }
Exemple #6
0
        public static string LikeComment(string contentId, string commentId, string commentType)
        {
            try
            {
                var isLike = ContentCommentRepository.LikeComment(CurrentUser.Instance, Guid.Parse(contentId), Guid.Parse(commentId), commentType.ToEnum <CommentTables>());

                return(isLike.ToString());
            }
            catch (Exception ex)
            {
                Log.Error(string.Format("ContentComment LikeComment({0}, {1}, {2})", contentId, commentId, commentType), ex);
                return(null);
            }
        }
        /// <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);
        }
Exemple #8
0
        public static ContentComment GetComment(string commentId, string commentType)
        {
            try
            {
                var result = ContentCommentRepository.SelectById(CurrentUser.Instance.SiteID, Guid.Parse(commentId),
                                                                 commentType.ToEnum <CommentTables>(), true);

                return(result);
            }
            catch (Exception ex)
            {
                Log.Error(string.Format("ContentComment GetCommentText({0}, {1})", commentId, commentType), ex);
                return(null);
            }
        }
        /// <summary>
        /// Binds the data.
        /// </summary>
        private void BindData()
        {
            CommentsCount   = ContentCommentRepository.GetCommentsCount(CurrentUser.Instance.SiteID, ContentId, CommentType);
            OfficialComment = ContentCommentRepository.SelectOfficialComment(CurrentUser.Instance.SiteID, ContentId, CommentType);

            tbl_ServiceLevelClient serviceLevelClient = null;

            var dataManager = new DataManager();

            switch (CommentType)
            {
            case CommentTables.tbl_RequirementComment:
                var requirement = dataManager.Requirement.SelectById(CurrentUser.Instance.SiteID, ContentId);
                if (requirement != null)
                {
                    serviceLevelClient =
                        requirement.tbl_ServiceLevel.tbl_ServiceLevelClient.FirstOrDefault(
                            o => o.ClientID == requirement.CompanyID);
                }
                break;

            case CommentTables.tbl_RequestComment:
                var request = dataManager.Request.SelectById(CurrentUser.Instance.SiteID, ContentId);
                if (request != null)
                {
                    serviceLevelClient =
                        request.tbl_ServiceLevel.tbl_ServiceLevelClient.FirstOrDefault(
                            o => o.ClientID == request.CompanyID);
                }
                break;
            }

            if (serviceLevelClient != null)
            {
                rprDesitnations.DataSource = serviceLevelClient.tbl_ServiceLevelContact.Where(
                    o => o.tbl_Contact.tbl_User.FirstOrDefault() != null).Select(
                    o =>
                    new
                {
                    UserID = o.tbl_Contact.tbl_User.FirstOrDefault().ID,
                    o.tbl_Contact.UserFullName
                });
                rprDesitnations.DataBind();
            }
        }
Exemple #10
0
        public static bool DeleteComment(string commentId, string commentType)
        {
            try
            {
                var contentComment = ContentCommentRepository.SelectById(CurrentUser.Instance.SiteID, Guid.Parse(commentId), commentType.ToEnum <CommentTables>());
                if (contentComment != null && !string.IsNullOrEmpty(contentComment.FileName))
                {
                    var fsp = new FileSystemProvider();
                    fsp.Delete(CurrentUser.Instance.SiteID, EnumHelper.GetEnumDescription(commentType.ToEnum <CommentTables>()), contentComment.FileName, FileType.Attachment);
                }

                ContentCommentRepository.Delete(CurrentUser.Instance.SiteID, Guid.Parse(commentId), commentType.ToEnum <CommentTables>());
                return(true);
            }
            catch (Exception ex)
            {
                Log.Error(string.Format("ContentComment DeleteComment({0}, {1})", commentId, commentType), ex);
                return(false);
            }
        }
Exemple #11
0
        public static IEnumerable <ContentComment> GetComments(string contentId, string commentType)
        {
            try
            {
                var result = ContentCommentRepository.GetComments(CurrentUser.Instance, Guid.Parse(contentId), commentType.ToEnum <CommentTables>(), true).OrderByDescending(c => c.CreatedAt).ToList();

                foreach (var contentComment in result)
                {
                    contentComment.Comment = contentComment.Comment.Replace("=\"/files/", "=\"" +
                                                                            ConfigurationManager.AppSettings["LeadForceSiteUrl"] + "/files/");
                }

                return(result);
            }
            catch (Exception ex)
            {
                Log.Error(string.Format("Comments GetComment({0}, {1})", contentId, commentType), ex);
                return(null);
            }
        }
        /// <summary>
        /// Saves the comment.
        /// </summary>
        /// <param name="request">The request.</param>
        public void SaveComment(tbl_Request request)
        {
            if (SelectedRequirementId.HasValue && !string.IsNullOrEmpty(Comment) && request.ContactID.HasValue)
            {
                var user = DataManager.User.SelectByContactIdExtended(CurrentUser.Instance.SiteID, (Guid)request.ContactID) ??
                           DataManager.User.AddPortalUser(CurrentUser.Instance.SiteID, (Guid)request.ContactID);
                if (user != null)
                {
                    var requirement = DataManager.Requirement.SelectById(CurrentUser.Instance.SiteID, (Guid)SelectedRequirementId);
                    if (!request.tbl_Requirement.Any(o => o.ID == requirement.ID))
                    {
                        request.tbl_Requirement.Add(requirement);
                        DataManager.Request.Update(request);
                    }

                    ContentCommentRepository.Add(CurrentUser.Instance.SiteID, user.ID, (Guid)SelectedRequirementId,
                                                 Comment, null, null, string.Empty,
                                                 CommentTables.tbl_RequirementComment);
                }
            }
        }
Exemple #13
0
        public static string CheckOfficialAnswer(string contentId, string commentId, string commentType)
        {
            try
            {
                ContentCommentRepository.UpdateOfficialAnswers(CurrentUser.Instance.SiteID, Guid.Parse(contentId), commentType.ToEnum <CommentTables>());
                var guidCommentId = Guid.Parse(commentId);
                var toUpdatePublicationComment = ContentCommentRepository.SelectById(CurrentUser.Instance.SiteID, guidCommentId, commentType.ToEnum <CommentTables>());
                if (toUpdatePublicationComment != null)
                {
                    toUpdatePublicationComment.IsOfficialAnswer = true;
                    ContentCommentRepository.Update(CurrentUser.Instance.SiteID, toUpdatePublicationComment, commentType.ToEnum <CommentTables>());
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                Log.Error(string.Format("ContentComment CheckOfficialAnswer({0}, {1}, {2})", contentId, commentId, commentType), ex);
                return("error");
            }
        }
        /// <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);
            }
        }
Exemple #15
0
        public static string UpdateCommentText(string commentId, string commentText, string commentType)
        {
            try
            {
                var comment = ContentCommentRepository.SelectById(CurrentUser.Instance.SiteID, Guid.Parse(commentId), commentType.ToEnum <CommentTables>());

                if (comment != null && comment.SiteID == CurrentUser.Instance.SiteID)
                {
                    commentText = Sanitizer.GetSafeHtmlFragment(commentText);

                    comment.Comment = commentText;
                    ContentCommentRepository.Update(CurrentUser.Instance.SiteID, comment, commentType.ToEnum <CommentTables>());
                    return(comment.Comment.ToHtml());
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                Log.Error(string.Format("ContentComment UpdateCommentText({0}, {1}, {2})", commentId, commentText, commentType), ex);
                return(null);
            }
        }
        /// <summary>
        /// Handles the OnClick event of the lbtnSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        protected void lbtnSave_OnClick(object sender, EventArgs e)
        {
            if (!Page.IsValid)
            {
                return;
            }

            if (!access.Write)
            {
                return;
            }

            var requirement = DataManager.Requirement.SelectById(SiteId, _requirementId) ?? new tbl_Requirement();

            requirement.ShortDescription = (txtShortDescription.Text.Length > 2048
                                                ? txtShortDescription.Text.Substring(0, 2048)
                                                : txtShortDescription.Text);

            //requirement.LongDescription = ucLongDescription.Content;

            requirement.RequestSourceTypeID = dcbRequestSourceType.SelectedIdNullable;

            requirement.RequirementStatusID = ucRequirementStatus.RequirementStatusId;

            requirement.RequestID           = dcbRequests.SelectedIdNullable;
            requirement.ProductID           = dcbProducts.SelectedIdNullable;
            requirement.CompanyID           = dcbCompany.SelectedIdNullable;
            requirement.ContactID           = ucContact.SelectedValue;
            requirement.ProductSeriesNumber = txtProductSeriesNumber.Text;
            requirement.RequirementTypeID   = dcbRequirementType.SelectedId;

            requirement.RequirementSeverityOfExposureID = dcbRequirementSeverityOfExposure.SelectedIdNullable;

            requirement.ServiceLevelID = dcbServiceLevel.SelectedId;

            requirement.ParentID = ucParentRequirment.ParentRequirementId;

            requirement.RequirementPriorityID   = dcbRequirementPriority.SelectedIdNullable;
            requirement.RequirementComplexityID = dcbRequirementComplexity.SelectedIdNullable;

            if (ucPublicationCategory.SelectedCategoryId != Guid.Empty)
            {
                requirement.PublicationCategoryID = ucPublicationCategory.SelectedCategoryId;
            }
            else
            {
                requirement.PublicationCategoryID = null;
            }

            requirement.ResponsibleID          = ucResponsible.SelectedValue;
            requirement.RealizationDatePlanned = rdpRealizationDatePlanned.SelectedDate;
            requirement.RealizationDateActual  = rdpRealizationDateActual.SelectedDate;
            requirement.ContractID             = dcbContract.SelectedIdNullable;
            requirement.OrderID   = dcbOrder.SelectedIdNullable;
            requirement.InvoiceID = dcbInvoice.SelectedIdNullable;
            requirement.EvaluationRequirementsProductID = dcbEvaluationRequirementsProducts.SelectedIdNullable;
            requirement.AnyProductName = txtAnyProductName.Text;
            requirement.Quantity       = (decimal)rntxtQuantity.Value;
            requirement.CurrencyID     = dcbCurrency.SelectedIdNullable;
            requirement.CurrencyPrice  = (decimal)rntxtCurrencyPrice.Value;
            requirement.CurrencyAmount = (decimal)rntxtCurrencyAmount.Value;
            requirement.UnitID         = dcbUnit.SelectedIdNullable;
            requirement.Rate           = (decimal)rntxtRate.Value;
            requirement.Price          = (decimal)rntxtPrice.Value;
            requirement.Amount         = (decimal)rntxtAmount.Value;
            requirement.RequirementImplementationCompleteID = dcbRequirementImplementationComplete.SelectedIdNullable;
            requirement.RequirementSpeedTimeID    = dcbRequirementSpeedTime.SelectedIdNullable;
            requirement.RequirementSatisfactionID = dcbRequirementSatisfaction.SelectedIdNullable;
            requirement.EstimationComment         = txtEstimationComment.Text;

            requirement.InternalUnitID           = dcbInternalUnit.SelectedIdNullable;
            requirement.InternalQuantity         = (decimal)rntxtInternalQuantity.Value;
            requirement.EstimateCommentInternal  = txtEstimateCommentInternal.Text;
            requirement.EstimateCommentForClient = txtEstimateCommentForClient.Text;

            if (requirement.ID == Guid.Empty)
            {
                requirement.SiteID    = SiteId;
                requirement.OwnerID   = CurrentUser.Instance.ContactID;
                requirement.CreatedAt = DateTime.Now;

                var requestSourceType = DataManager.RequirementType.SelectById(SiteId, requirement.RequirementTypeID);
                if (requestSourceType != null)
                {
                    var documentNumerator = DocumentNumerator.GetNumber((Guid)requestSourceType.NumeratorID, requirement.CreatedAt, requestSourceType.tbl_Numerator.Mask, "tbl_Requirement");
                    requirement.Number       = documentNumerator.Number;
                    requirement.SerialNumber = documentNumerator.SerialNumber;
                }

                DataManager.Requirement.Add(requirement);

                if (!string.IsNullOrEmpty(ucComment.Content))
                {
                    var contactId = requirement.ContactID ?? CurrentUser.Instance.ContactID;

                    var user = DataManager.User.SelectByContactIdExtended(SiteId, (Guid)contactId) ??
                               DataManager.User.AddPortalUser(SiteId, (Guid)contactId);

                    if (user != null)
                    {
                        ContentCommentRepository.Add(CurrentUser.Instance.SiteID, user.ID, requirement.ID, ucComment.Content, null, null, string.Empty,
                                                     CommentTables.tbl_RequirementComment, false, false);
                    }
                }

                if (!string.IsNullOrEmpty(txtComment.Text))
                {
                    var fileName = string.Empty;
                    if (rauFileUpload.UploadedFiles.Count > 0)
                    {
                        var fsp = new FileSystemProvider();
                        fileName = fsp.Upload(CurrentUser.Instance.SiteID,
                                              EnumHelper.GetEnumDescription(CommentTables.tbl_RequirementComment),
                                              rauFileUpload.UploadedFiles[0].FileName, rauFileUpload.UploadedFiles[0].InputStream, FileType.Attachment);
                    }

                    ContentCommentRepository.Add(CurrentUser.Instance.SiteID, CurrentUser.Instance.ID, requirement.ID, txtComment.Text, null, null, fileName,
                                                 CommentTables.tbl_RequirementComment, chxIsOfficialAnswer.Checked, false);
                }
            }
            else
            {
                DataManager.Requirement.Update(requirement);
            }

            if (!CheckRequestsToClose(requirement))
            {
                Response.Redirect(UrlsData.AP_Requirements());
            }
        }
Exemple #17
0
 /// <summary>
 /// Binds the data.
 /// </summary>
 private void BindData()
 {
     CommentsCount   = ContentCommentRepository.GetCommentsCount(CurrentUser.Instance.SiteID, ContentId, CommentType, true);
     OfficialComment = ContentCommentRepository.SelectOfficialComment(CurrentUser.Instance.SiteID, ContentId, CommentType);
 }