示例#1
0
        /// <summary>
        ///  用户留言,提交需求
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public IActionResult OnGetMessage(CmsMessage model)
        {
            var apiRes = new ApiResult <string>()
            {
                statusCode = (int)ApiEnum.Status
            };

            try
            {
                model.IP = Utils.GetIp();
                var list = _messageService.GetListAsync(m => m.IP == model.IP, m => m.AddDate, DbOrderEnum.Asc).Result.data;
                if (list.Count > 3)
                {
                    return(new JsonResult(new ApiResult <string>()
                    {
                        statusCode = (int)ApiEnum.HttpRequestError, message = "您提交的次数过多,请稍后重试!~"
                    }));
                }

                model.ColumnId = "message";
                model.UserName = model.Title;
                model.AddDate  = DateTime.Now;
                _messageService.AddAsync(model);
            }
            catch (Exception ex)
            {
                apiRes.message = ex.Message;
            }
            return(new JsonResult(new ApiResult <string>()
            {
                statusCode = apiRes.statusCode, message = apiRes.message
            }));
        }
示例#2
0
        private static ExportMessageLog MsgToExportLog(CmsMessage msg, IBAEntities1 ibaDb)
        {
            var result = new ExportMessageLog
            {
                Id              = msg.Id,
                MessageType     = msg.MessageType.ToString(),
                SentDate        = msg.Created.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss"),
                Title           = msg.Title,
                TotalRecipients = msg.TotalRecipients
            };

            foreach (var person in msg.AppUserMessages)
            {
                result.Recipients.Add(new ExportRecipients()
                {
                    Deleted = DateText(person.Deleted), Read = DateText(person.Read), Received = DateText(person.Received), IbaId = person.DeviceOwner.IbaId
                });
                result.RecipientIds.Add(person.DeviceOwner.IbaId);
                // need to read c_record
            }
            var ibausers = ibaDb.C_records.Where(r => result.RecipientIds.Contains(r.id)).Select(x => new { x.id, x.given_name, x.family_name });

            foreach (var person in result.Recipients)
            {
                var found = ibausers.FirstOrDefault(i => i.id == person.IbaId);
                if (found != null)
                {
                    person.GivenName  = found.given_name;
                    person.FamilyName = found.family_name;
                }
            }

            return(result);
        }
示例#3
0
        public static MessageViewModel MsgToMessageViewModel(CmsMessage msg, bool viewRecipientsAsListBox)
        {
            var result = new MessageViewModel
            {
                Id          = msg.Id,
                Created     = msg.SendDate.HasValue ? msg.SendDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : msg.Created.ToString("yyyy-MM-dd HH:mm:ss"),
                MessageType = msg.MessageType,
                Title       = msg.Title,
                Sender      = msg.Sender,
                Text        = msg.Text,
                Url         = msg.Url,
                UrlOnly     = msg.UrlOnly,
                Status      = msg.Status
            };

            if (msg.Recipients.IsNullOrWhiteSpace())
            {
                result.Recipients = "Everyone";
            }
            else if (!viewRecipientsAsListBox)
            {
                var recipientList = RecipientFieldToList(msg.Recipients);
                result.Recipients = recipientList[0].Name;
                if (recipientList.Count > 1)
                {
                    result.Recipients = $"{result.Recipients} + {recipientList.Count - 1} Others";
                }
            }
            else
            {
                result.RecipientList = FieldToRecipientList(msg.Recipients);
            }
            return(result);
        }
示例#4
0
        public static bool ProcessOneMessage(IbaCmsDbContext cmsDb, CmsMessage msg)
        {
            List <DeviceOwner> deviceOwners;

            if (msg.Recipients.IsNullOrWhiteSpace())
            {
                deviceOwners = cmsDb.DeviceOwners.ToList();
            }
            else
            {
                var recipients    = JsonConvert.DeserializeObject <List <StoreMessageRecipients> >(msg.Recipients);
                var recipientList = recipients.Select(recipient => recipient.Id).ToList();
                deviceOwners = cmsDb.DeviceOwners.Where(d => recipientList.Contains(d.IbaId)).ToList();
            }
            var count = 0;

            foreach (var owner in deviceOwners)
            {
                var appuserMessage = new AppUserMessage
                {
                    Created     = DateTime.UtcNow,
                    DeviceOwner = owner,
                    Message     = msg
                };

                count++;
                cmsDb.AppUserMessages.Add(appuserMessage);
            }
            msg.Status          = CmsMessageStatus.Distributed;
            msg.Created         = DateTime.UtcNow;
            msg.TotalRecipients = count;
            return(count > 0);
        }
示例#5
0
        public static bool AddMessage(IbaCmsDbContext db, StoreMessageModel model)
        {
            try
            {
                var user      = db.Users.FirstOrDefault(u => u.Id == model.UserId);
                var dbMessage = new CmsMessage
                {
                    Url         = model.Url ?? "",
                    Created     = DateTime.UtcNow,
                    MessageType = model.MessageType,
                    Text        = model.Text ?? "",
                    Title       = model.Title,
                    Sender      = user,
                    Recipients  = model.Recipients,
                    Status      = CmsMessageStatus.Draft,
                    UrlOnly     = model.UrlOnly,
                    TimeZone    = model.TimeZone,
                    SendDate    = model.SendDate.HasValue ? model.SendDate.Value.ToUniversalTime() : (DateTime?)null
                };
                db.CmsMessages.Add(dbMessage);

                db.SaveChanges();

                model.NewId = dbMessage.Id;
            }
            catch (Exception)
            {
                return(false);
            }
            return(true);
        }
示例#6
0
        private ModifyMessageModel MessageToModifyMessageModel(CmsMessage msg)
        {
            var result = new ModifyMessageModel
            {
                UrlOnly         = msg.UrlOnly,
                Text            = msg.Text,
                Url             = msg.Url,
                Id              = msg.Id,
                MessageType     = msg.MessageType,
                Title           = msg.Title,
                RecipientsField = msg.Recipients,
                SendDateTime    = msg.SendDate,
                TimeZone        = msg.TimeZone,
                RecipientList   = MessageLayer.FieldToRecipientList(msg.Recipients)
            };

            return(result);
        }
示例#7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="server"></param>
        /// <param name="context"></param>
        /// <param name="callbackEndPoint"></param>
        /// <param name="cancel"></param>
        public override void Run(IHostServer server, WebContext context, string callbackEndPoint, CancellationToken cancel)
        {
            if (context.PreparedParameters == null)
            {
                context.PreparedParameters = RequestParameters.Create(context);
            }
            var preparedParams   = context.PreparedParameters;
            var fingerprint      = preparedParams.Get("cert");
            var cms              = preparedParams.Get("message");
            var container        = server.Container;
            var caConfigProvider = container.Get <ICaConfigProvider>();

            if (caConfigProvider == null)
            {
                throw new Exception("Cannot get CA config");
            }
            var caConfig = caConfigProvider.GetConfig();

            if (caConfig == null || !caConfig.GetIsValid())
            {
                throw new Exception("Not valid CA config");
            }
            var cmsDecryptor = new CmsDecryptor();

            cmsDecryptor.Initialize(caConfig);
            var cmsMessage = new CmsMessage {
                CertificateFingerprint = fingerprint,
                EncryptedMessage       = cms
            };

            context.ContentType = MimeHelper.JSON;
            string salt;

            lock (TokenAuthGetSaltHandler.Sync) {
                salt = TokenAuthGetSaltHandler.Salts[fingerprint].Value;
            }
            var message = cmsDecryptor.Descrypt(cmsMessage);
            var result  = message != salt ? "false" : "true";

            context.Finish(result);
        }
示例#8
0
 public static void UpdateMessage(IbaCmsDbContext db, StoreMessageModel model, CmsMessage msg)
 {
     msg.Url         = model.Url ?? "";
     msg.MessageType = model.MessageType;
     msg.Text        = model.Text ?? "";
     msg.Title       = model.Title;
     msg.Recipients  = model.Recipients;
     msg.UrlOnly     = model.UrlOnly;
     msg.SendDate    = model.SendDate.HasValue ? model.SendDate.Value.ToUniversalTime() : (DateTime?)null;
     msg.Status      = CmsMessageStatus.Draft;
     db.SaveChanges();
 }