예제 #1
0
        private async Task <string> BuildMessage(AuditTableKafkaMessage <AuditCrm> crm)
        {
            string message = string.Empty;

            switch (crm.LogType)
            {
            case LogTypeEnum.INSERT:
                message = await BuildMessageForInsert(crm);

                break;

            case LogTypeEnum.UPDATE:
                message = await BuildMessageForUpdate(crm);

                break;

            case LogTypeEnum.CHANGE_STATUS:
            case LogTypeEnum.COMMENT:
                message = await BuildMessageForComment(crm);

                break;
            }

            return(message);
        }
예제 #2
0
        private async Task <string> BuildMessageForComment(AuditTableKafkaMessage <AuditCrm> crm)
        {
            StringBuilder builder = new StringBuilder();

            if (!string.IsNullOrEmpty(crm.Comment))
            {
                builder.Append($"{crm.Comment} <br/>");
            }

            if (crm.Attachments.Any())
            {
                builder.Append("Đã đính kèm file. <br/>");
            }

            return(await Task.FromResult(builder.ToString()));
        }
예제 #3
0
        public static AuditTableKafkaMessage <T1> Convert <T1, T>(this AuditTableKafkaMessage <T> source)
            where T1 : class

        {
            var result = new AuditTableKafkaMessage <T1>
            {
                Table       = source.Table,
                LogType     = source.LogType,
                Id          = source.Id,
                OldValue    = source.OldValue as T1,
                Value       = source.Value as T1,
                Comment     = source.Comment,
                Attachments = source.Attachments
            };

            return(result);
        }
예제 #4
0
        public async Task <TResponse <bool> > Log(AuditTableKafkaMessage <AuditCrm> crm)
        {
            try
            {
                string title = string.Empty;
                switch (crm.LogType)
                {
                case LogTypeEnum.INSERT:
                    title = "đã thêm mới Cơ hội bán hàng";
                    break;

                case LogTypeEnum.UPDATE:
                    title = "đã cập nhật cơ hội bán hàng";
                    break;

                case LogTypeEnum.CHANGE_STATUS:
                    title = "đã thay đổi trạng thái";
                    break;

                case LogTypeEnum.COMMENT:
                    title = "đã bình luận";
                    break;
                }

                string message = await BuildMessage(crm);

                var result = await WriteRepository.ExecuteScalarAsync <int>(SqlQuery.INSERT_LOG, new
                {
                    TableName = "Crm",
                    ObjectId  = crm.Id,
                    Title     = title,
                    Message   = message,
                    crm.UserId,
                    LogDate     = DateTime.Now,
                    OldStatusId = crm.OldValue.CrmStatusId,
                    StatusId    = crm.Value.CrmStatusId
                });

                if (result.IsSuccess)
                {
                    if (result.Data > 0)
                    {
                        if (crm.Attachments.Any())
                        {
                            foreach (var crmAttachment in crm.Attachments)
                            {
                                await WriteRepository.ExecuteAsync(SqlQuery.INSERT_LOG_ATTACHMENTS, new
                                {
                                    TableLogId     = result.Data,
                                    Attachment     = crmAttachment.Key,
                                    AttachmentName = crmAttachment.Value
                                });
                            }
                        }

                        Logger.Info($"Insert log CRM: {title} - {message}");

                        return(await Ok(true));
                    }

                    return(await Fail <bool>($"Can not insert log: {crm.ToJson()}"));
                }

                return(await Fail <bool>(result.Message));
            }
            catch (Exception exception)
            {
                return(await Fail <bool>(exception));
            }
        }
예제 #5
0
        private async Task <string> BuildMessageForUpdate(AuditTableKafkaMessage <AuditCrm> crm)
        {
            StringBuilder builder = new StringBuilder();

            #region Need

            if (string.IsNullOrEmpty(crm.OldValue.Need) &&
                !string.IsNullOrEmpty(crm.Value.Need))
            {
                builder.Append($"Đã thêm mới nhu cầu: <b>{crm.Value.Need}</b>. <br/>");
            }
            else if (!string.IsNullOrEmpty(crm.OldValue.Need) &&
                     string.IsNullOrEmpty(crm.Value.Need))
            {
                builder.Append($"Đã xóa bỏ nhu cầu: <b>{crm.OldValue.Need}</b>. <br/>");
            }
            else if (!string.Equals(crm.OldValue.Need, crm.Value.Need, StringComparison.CurrentCultureIgnoreCase))
            {
                builder.Append($"Đã cập nhật nhu cầu từ <b>{crm.OldValue.Need}</b> sang <b>{crm.Value.Need}</b>. <br/>");
            }

            #endregion

            #region Description

            if (string.IsNullOrEmpty(crm.OldValue.Description) &&
                !string.IsNullOrEmpty(crm.Value.Description))
            {
                builder.Append($"Đã thêm mới ghi chú: <b>{crm.Value.Description}</b>. <br/>");
            }
            else if (!string.IsNullOrEmpty(crm.OldValue.Description) &&
                     string.IsNullOrEmpty(crm.Value.Description))
            {
                builder.Append($"Đã xóa bỏ ghi chú: <b>{crm.OldValue.Description}</b>. <br/>");
            }
            else if (!string.Equals(crm.OldValue.Description, crm.Value.Description, StringComparison.CurrentCultureIgnoreCase))
            {
                builder.Append($"Đã cập nhật ghi chú từ <b>{crm.OldValue.Description}</b> sang <b>{crm.Value.Description}</b>. <br/>");
            }

            #endregion

            #region ContactDate

            if (crm.OldValue.ContactDate != crm.Value.ContactDate)
            {
                builder.Append($"Đã thay đổi ngày liên hệ từ <b>{crm.OldValue.ContactDate:dd-MM-yyyy hh:mm}</b> sang <b>{crm.Value.ContactDate: dd-MM-yyyy hh:mm}</b>. <br/>");
            }

            #endregion

            #region CrmPriorityId

            if (crm.OldValue.CrmPriorityId != crm.Value.CrmPriorityId)
            {
                var oldCrmPriority = await _crmPriorityCacheService.GetById(crm.OldValue.CrmPriorityId);

                var crmPriority = await _crmPriorityCacheService.GetById(crm.Value.CrmPriorityId);

                if (oldCrmPriority != null &&
                    crmPriority != null)
                {
                    builder.Append($"Đã thay đổi mức độ khẩn cấp từ <b>{oldCrmPriority.Name}</b> sang <b>{crmPriority.Name}</b>. <br/>");
                }
            }

            #endregion

            #region CustomerSourceId

            if (crm.OldValue.CustomerSourceId != crm.Value.CustomerSourceId)
            {
                var oldCustomerSource = await _customerSourceCacheService.GetById(crm.OldValue.CustomerSourceId);

                var customerSource = await _customerSourceCacheService.GetById(crm.Value.CustomerSourceId);

                if (oldCustomerSource != null &&
                    customerSource != null)
                {
                    builder.Append($"Đã thay đổi nguồn khách hàng từ <b>{oldCustomerSource.Name}</b> sang <b>{customerSource.Name}</b>. <br/>");
                }
            }

            #endregion

            #region CrmTypeId

            if (crm.OldValue.CrmTypeId != crm.Value.CrmTypeId)
            {
                var oldCrmType = await _crmTypeCacheService.GetById(crm.OldValue.CrmTypeId);

                var crmType = await _crmTypeCacheService.GetById(crm.Value.CrmTypeId);

                if (oldCrmType != null &&
                    crmType != null)
                {
                    builder.Append($"Đã thay đổi kiểu chốt từ <b>{oldCrmType.Name}</b> sang <b>{crmType.Name}</b>. <br/>");
                }
            }

            #endregion

            #region ProductGroupId

            if (crm.OldValue.ProductGroupId != crm.Value.ProductGroupId)
            {
                var oldProductGroup = await _productGroupCacheService.GetById(crm.OldValue.ProductGroupId);

                var productGroup = await _productGroupCacheService.GetById(crm.Value.ProductGroupId);

                if (oldProductGroup != null &&
                    productGroup != null)
                {
                    builder.Append($"Đã thay đổi nhóm sản phẩm từ <b>{oldProductGroup.Name}</b> sang <b>{productGroup.Name}</b>. <br/>");
                }
            }

            #endregion

            #region Visit

            if (crm.OldValue.Visit != crm.Value.Visit)
            {
                if (crm.OldValue.Visit == 0)
                {
                    builder.Append("Đã thay đổi đến cửa hàng từ <b>Chưa đến</b> sang <b>Đã đến</b>. <br/>");
                }
                else
                {
                    builder.Append("Đã thay đổi đến cửa hàng từ <b>Đã đến</b> sang <b>Chưa đến</b>. <br/>");
                }
            }

            #endregion

            #region UserIds

            var addUserIds = crm.Value.UserIds.Where(c => !crm.OldValue.UserIds.Contains(c))
                             .ToList();
            var removeUserIds = crm.OldValue.UserIds.Where(c => !crm.Value.UserIds.Contains(c))
                                .ToList();
            if (addUserIds.Any())
            {
                foreach (var addUserId in addUserIds)
                {
                    var addUser = await _userCacheService.GetById(addUserId);

                    if (addUser != null)
                    {
                        builder.Append($"Đã thêm <b>{addUser.DisplayName}</b> làm người phụ trách. <br/>");
                    }
                }
            }

            if (removeUserIds.Any())
            {
                foreach (var removeUserId in removeUserIds)
                {
                    var removeUser = await _userCacheService.GetById(removeUserId);

                    if (removeUser != null)
                    {
                        builder.Append($"Đã xóa <b>{removeUser.DisplayName}</b> khỏi danh sách người phụ trách. <br/>");
                    }
                }
            }

            #endregion

            return(builder.ToString());
        }
예제 #6
0
 private async Task <string> BuildMessageForInsert(AuditTableKafkaMessage <AuditCrm> crm)
 {
     return(await Task.FromResult(string.Empty));
 }