Example #1
0
        public static byte[] ExportLogByDateToByteArray(IbaCmsDbContext cmsDb, IBAEntities1 ibaDb, DateTime?from, DateTime?to)
        {
            var msgs = cmsDb.CmsMessages.Where(m => m.Status > CmsMessageStatus.Outbox).AsQueryable();

            if (from.HasValue)
            {
                msgs = msgs.Where(m => m.Created >= from.Value);
            }
            if (to.HasValue)
            {
                msgs = msgs.Where(m => m.Created <= to.Value);
            }
            using (var memoryStream = new MemoryStream())
            {
                var streamWriter = new StreamWriter(memoryStream);
                var csvWriter    = new CsvWriter(streamWriter);
                foreach (var msg in msgs.ToList())
                {
                    var export = MsgToExportLog(msg, ibaDb);
                    WriteMessage(csvWriter, export);
                }
                streamWriter.Flush();
                memoryStream.Position = 0;
                return(memoryStream.ToArray());
            }
        }
Example #2
0
        public static ContentLibraryResponseModel RequestContent(IbaCmsDbContext db, ContentLibraryRequestModel model)
        {
            var response = new ContentLibraryResponseModel();

            CheckTimedContent(db);
            var dbContent = db.ContentLibraries.Where(c => c.Status == ContentStatus.Active).OrderByDescending(c => c.Created).AsQueryable();

            response.TotalRecords = dbContent.Count();
            if (model.Start > 0)
            {
                dbContent = dbContent.Skip(model.Start);
            }
            if (model.Length <= 0)
            {
                model.Length = DefaultPageSize;
            }
            dbContent = dbContent.Take(model.Length);
            foreach (var content in dbContent)
            {
                var item = new ContentLibraryItemsResponseModel()
                {
                    Id           = content.Id,
                    ThumbnailUrl = content.ImageUrl ?? "",
                    Title        = content.Title,
                    Precis       = content.Precis ?? "",
                    ContentType  = content.ContentType,
                    Url          = content.Url,
                    Featured     = content.Featured,
                    CreatedDate  = content.Created.HasValue ? DateTime.SpecifyKind(content.Created.Value, DateTimeKind.Utc) : content.Created
                };
                response.Items.Add(item);
            }
            return(response);
        }
        public static bool ProcessOneMessage(IbaCmsDbContext cmsDb, P2PMessage msg)
        {
            var senderId     = msg.SenderId;
            var idToSendTo   = msg.Thread.InitialRecipientId == senderId ? msg.Thread.InitialSenderId : msg.Thread.InitialRecipientId;
            var deviceOwners = cmsDb.DeviceOwners.Where(r => r.IbaId == idToSendTo);
            var count        = 0;

            foreach (var owner in deviceOwners)
            {
                var appuserMessage = new AppP2PMessage
                {
                    Created     = DateTime.UtcNow,
                    DeviceOwner = owner,
                    Message     = msg
                };
                foreach (var device in owner.Devices.Where(d => !d.PushToken.IsNullOrWhiteSpace()))
                {
                    //var push = new PushMessageQueue
                    //{
                    //    Created = DateTime.UtcNow,
                    //    Device = device,
                    //    AppP2PMessage = appuserMessage
                    //};
                    //appuserMessage.Queued.Add(push);
                }
                count++;
                cmsDb.AppP2PMessages.Add(appuserMessage);
                SendPushMessage(appuserMessage);
            }
            msg.DeliveredTime = DateTime.UtcNow;
            return(count > 0);
        }
        public static bool HideMessageThread(IbaCmsDbContext cmsDb, int threadId, int myId)
        {
            var thread = cmsDb.UserMessageThreads.SingleOrDefault(r => r.InitialSenderId == threadId && r.InitialRecipientId == myId);

            if (thread == null)
            {
                thread = cmsDb.UserMessageThreads.SingleOrDefault(r => r.InitialRecipientId == threadId && r.InitialSenderId == myId);
            }
            if (thread == null)
            {
                throw new HttpException(404, "No chat history found");
            }
            if (thread.InitialSenderId == myId)
            {
                thread.InitialSenderDeletionDate = DateTime.UtcNow;
            }
            else if (thread.InitialRecipientId == myId)
            {
                thread.InitialRecipientDeletionDate = DateTime.UtcNow;
            }
            else
            {
                throw new HttpException(401, "User cannot delete this thread.");
            }
            try
            {
                cmsDb.SaveChanges();
            }
            catch (Exception e)
            {
                return(false);
            }
            return(true);
        }
Example #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);
        }
Example #6
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);
        }
        public static bool SetMessageToRead(IbaCmsDbContext cmsDb, int myId, int messageId)
        {
            try
            {
                var message = cmsDb.UserMessages.SingleOrDefault(r => r.P2PMessageId == (long)messageId);


                if (message != null)
                {
                    if (message.Thread.isInvolvedInThread(myId) && message.SenderId != myId)
                    {
                        message.ReadTime = DateTime.UtcNow;
                        if (message.DeliveredTime == null)
                        {
                            message.ReadTime = message.ReadTime;
                        }
                        cmsDb.SaveChanges();
                        return(true);
                    }
                }
            }
            catch (Exception e)
            {
                return(false);
            }
            return(false);
        }
Example #8
0
        public static List <ConferenceEventResponseModel> GetEventsForConferenceById(IbaCmsDbContext db, IBAEntities1 ibaDb, int conferenceId, decimal userId, int take = 20, int skip = 0)
        {
            var result          = new List <ConferenceEventResponseModel>();
            var acceptableTypes = new List <decimal> {
                1, 2, 3, 4, 5, 6, 7, 8
            };
            var conferenceFunctions =
                from cf in ibaDb.conf_function
                join ta in ibaDb.conf_function_ticket_allocation.DefaultIfEmpty()
                on new { ConferenceId = cf.conference_id, FunctionId = cf.id, GuestId = false, MemberId = userId }
            equals new { ConferenceId = (decimal)ta.ConferenceID, FunctionId = (decimal)ta.FunctionID, GuestId = ta.GuestID.HasValue, MemberId = (decimal)ta.MemberID }
            into temp
            from e in temp.DefaultIfEmpty()
            where cf.conference_id == conferenceId && acceptableTypes.Contains(cf.type_id) && cf.status_id == 2
            select new { cf.id, cf.function_start, cf.function_end, cf.title, cf.location, cf.description, Attending = e != null };
            var conferenceRooms = db.EventLocations.Where(r => r.ConferenceId == conferenceId).ToList();

            foreach (var eventLocation in conferenceRooms)
            {
                var eventRoom = eventLocation.LocationName;
                var conferenceFunctionsForRoom =
                    conferenceFunctions.Where(cf => cf.location == eventRoom);
                foreach (var conferenceFunction in conferenceFunctionsForRoom)
                {
                    var start = new DateTime(conferenceFunction.function_start.Year, conferenceFunction.function_start.Month, conferenceFunction.function_start.Day, conferenceFunction.function_start.Hour,
                                             conferenceFunction.function_start.Minute, conferenceFunction.function_start.Second, DateTimeKind.Utc);
                    var end = new DateTime(conferenceFunction.function_end.Year, conferenceFunction.function_end.Month, conferenceFunction.function_end.Day, conferenceFunction.function_end.Hour,
                                           conferenceFunction.function_end.Minute, conferenceFunction.function_end.Second, DateTimeKind.Utc);

                    result.Add(new ConferenceEventResponseModel
                    {
                        ConferenceId    = conferenceId,
                        StartTime       = start, // conferenceFunction.function_start,
                        EndTime         = end,   //conferenceFunction.function_end,
                        EventItemId     = (int)conferenceFunction.id,
                        Title           = conferenceFunction.title,
                        TranslatedTitle = eventLocation.TranslatedTitle,
                        RoomName        = conferenceFunction.location,
                        RoomCentreX     = eventLocation.CentreX,
                        RoomCentreY     = eventLocation.CentreY,
                        Lat             = eventLocation.Lat,
                        Long            = eventLocation.Long,
                        Floor           = eventLocation.Floor,
                        SubTitle        = conferenceFunction.description,
                        Attending       = conferenceFunction.Attending,
                        BuildingId      = eventLocation.Building.ScheduleEventBuildingId
                    });
                }
            }
            var existingLocations = conferenceRooms.Select(r => r.LocationName);
            var allLocations      = conferenceFunctions.Select(r => r.location).Where(t => !string.IsNullOrEmpty(t));

            return(result.OrderBy(r => r.StartTime).Skip(skip).Take(take).ToList());
        }
Example #9
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();
 }
Example #10
0
 public static void CreateScheduleEventLocationsIfDoesntExist(IbaCmsDbContext db, List <ConferenceRoomViewModel> conferenceRooms)
 {
     foreach (var room in conferenceRooms)
     {
         var existingRoom = db.EventLocations.Any(r => r.LocationName == room.RoomName);
         if (!existingRoom)
         {
             var location = CreateScheduleEventLocation(room);
             db.EventLocations.Add(location);
         }
     }
     db.SaveChanges();
 }
Example #11
0
        public static void CheckTimedContent(IbaCmsDbContext db)
        {
            var dbContent = db.ContentLibraries.Where(c => c.Status == ContentStatus.AwaitingDate).OrderByDescending(c => c.Created).AsQueryable();

            foreach (var content in dbContent)
            {
                if (DateTime.Compare(DateTime.UtcNow, (DateTime)content.AvailableFromDate) > 0)
                {
                    content.Status  = ContentStatus.Active;
                    content.Created = content.AvailableFromDate;
                }
            }
            db.SaveChanges();
        }
Example #12
0
        public static MessageResponseModel GetMessagesFromData(IbaCmsDbContext cmsDb, decimal ibaUserId, MessageRequestModel model)
        {
            var result = new MessageResponseModel();
            IQueryable <AppUserMessage> msgs;

            if (model.AppUserMessageId > 0)
            {
                msgs = cmsDb.AppUserMessages.Where(a => a.Id == model.AppUserMessageId).AsQueryable();
                result.TotalRecords = msgs.Count();
            }
            else
            {
                msgs = cmsDb.AppUserMessages.Where(a => a.DeviceOwner.IbaId == ibaUserId && a.Deleted == null && a.Message.SendDate < DateTime.UtcNow)
                       .Where(a => (model.From.HasValue && a.Created > model.From.Value) || !model.From.HasValue)
                       .OrderByDescending(a => a.Created)
                       .AsQueryable();
                result.TotalRecords = msgs.Count();
                if (model.Start > 0)
                {
                    msgs = msgs.Skip(model.Start);
                }
                if (model.Length <= 0)
                {
                    model.Length = DefaultPageSize;
                }
                msgs = msgs.Take(model.Length);
            }
            foreach (var msg in msgs.ToList())
            {
                var item = new AppUserMessagesResponseItem
                {
                    AppUserMessageId = msg.Id,
                    Title            = msg.Message.Title,
                    MessageType      = msg.Message.MessageType,
                    Text             = msg.Message.Text,
                    Url           = msg.Message.Url ?? "",
                    FormattedDate = msg.Message.SendDate.HasValue ? DateTime.SpecifyKind(msg.Message.SendDate.Value, DateTimeKind.Utc) :  DateTime.SpecifyKind(msg.Created, DateTimeKind.Utc)
                };
                if (msg.Deleted != null)
                {
                    item.Status = AppUserMessagesResponseStatus.Deleted;
                }
                else if (msg.Read != null)
                {
                    item.Status = AppUserMessagesResponseStatus.Read;
                }
                result.Messages.Add(item);
            }
            return(result);
        }
 /// <summary>
 /// Updates the database table <see cref="Device"/> by setting to
 /// null the push tokens of each device matching the specified push
 /// token and the specified type.
 /// </summary>
 /// <param name="deviceType"></param>
 /// <param name="pushToken"></param>
 private static void NullifyDevicePushToken(DeviceType deviceType, string pushToken)
 {
     using (var db = new IbaCmsDbContext())
     {
         var devices = db.Devices
                       .Where(device => deviceType.Equals(device.DeviceType))
                       .Where(device => pushToken.Equals(device.PushToken));
         foreach (var device in devices)
         {
             device.PushToken = null;
             device.UpdatedOn = DateTime.UtcNow;
         }
         db.SaveChanges();
     }
 }
        public static GetP2PThreadResponseModel GetMessagesBetweenUsers(IbaCmsDbContext cmsDb, int user1, int user2, int?take, int skip = 0)
        {
            var thread = cmsDb.UserMessageThreads.SingleOrDefault(r => r.InitialSenderId == user1 && r.InitialRecipientId == user2);

            if (thread == null)
            {
                thread = cmsDb.UserMessageThreads.SingleOrDefault(r => r.InitialRecipientId == user1 && r.InitialSenderId == user2);
            }
            if (thread == null)
            {
                throw new HttpException(404, "No chat history found");
            }
            var response = new GetP2PThreadResponseModel();

            response.RecipientId = user2;
            response.ThreadId    = thread.P2PMessageThreadId;
            response.Messages    = new List <P2PMessageResponseModel>();
            var otherUserActivity = cmsDb.UserMessageThreads.Where(r => r.InitialSenderId == user2 || r.InitialRecipientId == user2).SelectMany(r => r.Messages).Where(r => r.SenderId == user2)
                                    .OrderByDescending(r => r.P2PMessageId).FirstOrDefault();

            if (otherUserActivity != null)
            {
                response.OtherParticipantLastSeenDateTime = DateTime.SpecifyKind((DateTime)otherUserActivity.SentTime, DateTimeKind.Utc);
            }
            int messagesToTake = 0;

            if (take != null)
            {
                messagesToTake = (int)take;
            }
            else
            {
                take = thread.Messages.Count;
            }
            foreach (var message in thread.Messages.OrderByDescending(r => r.SentTime).Skip(skip).Take(messagesToTake))
            {
                response.Messages.Add(new P2PMessageResponseModel()
                {
                    SentTime      = DateTime.SpecifyKind((DateTime)message.SentTime, DateTimeKind.Utc),
                    SentByMe      = message.SenderId == user1,
                    DeliveredTime = message.DeliveredTime != null ? DateTime.SpecifyKind((DateTime)message.DeliveredTime, DateTimeKind.Utc) : message.DeliveredTime,
                    Message       = DecryptMessage(message.Message),
                    MessageId     = message.P2PMessageId,
                    ReadTime      = message.ReadTime != null ? DateTime.SpecifyKind((DateTime)message.ReadTime, DateTimeKind.Utc) : message.ReadTime,
                });
            }
            return(response);
        }
Example #15
0
        public static async Task SendMessage(IbaCmsDbContext db, long messageId, DateTime?time = null)
        {
            var msg = db.CmsMessages.FirstOrDefault(m => m.Id == messageId);

            if (msg != null)
            {
                msg.SendDate = time ?? DateTime.UtcNow;
                msg.Status   = CmsMessageStatus.Outbox;
                db.SaveChanges();

                foreach (var appMessage in msg.AppUserMessages)
                {
                    if (appMessage.DeviceOwner.NamedUserId != null)
                    {
                        await SendPushMessage(appMessage, time);
                    }
                }
            }
        }
        public static List <ConnectionResponseModel> GetconnectedUserIds(IbaCmsDbContext cmsDb, IBAEntities1 db, decimal myId)
        {
            List <ConnectionResponseModel> response = new List <ConnectionResponseModel>();


            var ids = cmsDb.UserMessageThreads.Where(r => r.InitialSenderId == (int)myId).Select(t => new Connections()
            {
                UserId = t.InitialRecipientId, P2PMessage = t.Messages.OrderByDescending(r => r.SentTime).FirstOrDefault()
            }).ToList();

            ids.AddRange(cmsDb.UserMessageThreads.Where(r => r.InitialRecipientId == (int)myId).Select(t => new Connections()
            {
                UserId = t.InitialSenderId, P2PMessage = t.Messages.OrderByDescending(r => r.SentTime).FirstOrDefault()
            }).ToList());
            var distinct = ids.Distinct().ToList();

            foreach (var message in distinct)
            {
                if ((message.P2PMessage.Thread.InitialRecipientId == myId && message.P2PMessage.Thread.InitialRecipientDeletionDate == null) ||
                    (message.P2PMessage.Thread.InitialSenderId == myId && message.P2PMessage.Thread.InitialSenderDeletionDate == null))
                {
                    var user       = db.C_records.SingleOrDefault(r => r.id == message.UserId);
                    var connection = new ConnectionResponseModel()
                    {
                        UserId = message.UserId,
                        Name   = user != null?String.Format("{0} {1}", user.given_name, user.family_name) : null,
                                     UserProfileImageUrl = user != null ? user.ProfileImageName : null,
                                     LastMessage         = message.P2PMessage == null ? null : new P2PMessageResponseModel()
                        {
                            DeliveredTime = message.P2PMessage.DeliveredTime,
                            SentByMe      = message.P2PMessage.SenderId == myId,
                            SentTime      = DateTime.SpecifyKind((DateTime)message.P2PMessage.SentTime, DateTimeKind.Utc),
                            Message       = DecryptMessage(message.P2PMessage.Message),
                            MessageId     = message.P2PMessage.P2PMessageId,
                            ReadTime      = message.P2PMessage.ReadTime != null?DateTime.SpecifyKind((DateTime)message.P2PMessage.ReadTime, DateTimeKind.Utc) : message.P2PMessage.ReadTime
                        }
                    };
                    response.Add(connection);
                }
            }
            return(response);
        }
Example #17
0
        public static bool LogMessageStatus(IbaCmsDbContext cmsDb, UpdateMessageStatusModel model, decimal ibaId)
        {
            var msg = cmsDb.AppUserMessages.FirstOrDefault(a => a.Id == model.AppUserMessageId && a.DeviceOwner.IbaId == ibaId); // make sure that msg updated by correct device

            if (msg == null)
            {
                return(true); // should never happen
            }
            bool updated = false;

            if (model.Read != null && msg.Read == null)
            {
                updated  = true;
                msg.Read = model.Read.Value;
            }
            if (model.Deleted != null && msg.Deleted == null)
            {
                updated     = true;
                msg.Deleted = model.Deleted.Value;
            }
            if (model.Received != null && msg.Received == null)
            {
                updated      = true;
                msg.Received = model.Received.Value;
            }
            if (!updated)
            {
                return(true);
            }
            try
            {
                cmsDb.SaveChanges();
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Example #18
0
        public static byte[] ExportSingleLogToByteArray(long messageId, IbaCmsDbContext cmsDb, IBAEntities1 ibaDb)
        {
            var msg = cmsDb.CmsMessages.FirstOrDefault(m => m.Id == messageId);

            if (msg == null || msg.Status <= CmsMessageStatus.Outbox)
            {
                return(null);
            }
            var export = MsgToExportLog(msg, ibaDb);

            using (var memoryStream = new MemoryStream())
            {
                var streamWriter = new StreamWriter(memoryStream);
                var csvWriter    = new CsvWriter(streamWriter);
                WriteMessage(csvWriter, export);

                streamWriter.Flush();
                memoryStream.Position = 0;

                return(memoryStream.ToArray());
            }
        }
        public static P2pMessageSendResponseModel SendMessageToUser(IbaCmsDbContext cmsDb, IBAEntities1 Db, int user1, int user2, string messageToSend, ControllerContext context, string uuid = null)
        {
            var response = new P2pMessageSendResponseModel();

            response.Success = true;
            var thread = cmsDb.UserMessageThreads.SingleOrDefault(r => r.InitialSenderId == user1 && r.InitialRecipientId == user2);

            if (thread == null)
            {
                thread = cmsDb.UserMessageThreads.SingleOrDefault(r => r.InitialRecipientId == user1 && r.InitialSenderId == user2);
            }
            //NOTE: Users can only send messages to another user if they are both visiting the SAME conference.
            //var conferenceOnNow = IBA_Common.Models.conf_conference.ConferenceOnNow(cmsDb);
            //if (conferenceOnNow == null)
            //{
            //    response.Success = false;
            //}


            //var delegateConf = Db.conf_delegate.SingleOrDefault(r => r.conference_id == 673 && r.id == user1); // Sender is at conference
            //if (delegateConf == null)
            //{
            //    response.Success = false;
            //}

            //var delegateConf2 = Db.conf_delegate.SingleOrDefault(r => r.conference_id == 673 && r.id == user2);// Receiver is at conference
            //if (delegateConf2 == null)
            //{
            //    response.Success = false;
            //}

            if (response.Success)
            {
                var sender = Db.C_records.SingleOrDefault(r => r.id == user1);

                if (thread == null)
                {
                    //NOTE: If no thread exists this is the first contact the user has made with the other person. Check recepient device usage if last use > X days send email.
                    //var recipientDevices = cmsDb.Devices.Where(r => r.DeviceOwner.IbaId == user2);
                    //var user = Db.conf_delegate.Where(t => t.conference_id == AppSettings.ConferenceId).FirstOrDefault(r => r.record_id == user2);
                    //if (user != null)
                    //{
                    //    if(AppSettings.ShouldSendEmails)
                    //    {
                    //        if (recipientDevices.Count() == 0)
                    //        {

                    //            EmailHelper.SendEmail(user.conf_email, "IBA Members App Notification", new P2PEmailViewModel() { SenderName = sender.given_name, ProfileImageUrl = sender.ProfileImageName, MessageContents = messageToSend }, context, "~/Views/Messages/P2PMessageEmail.cshtml");
                    //        }
                    //        else
                    //        {
                    //            var lastUsed = recipientDevices.OrderByDescending(r => r.UpdatedOn).First();
                    //            if ((lastUsed.UpdatedOn - DateTime.UtcNow).Days > 10)
                    //            {
                    //                EmailHelper.SendEmail(user.conf_email, "IBA Members App Notification", new P2PEmailViewModel() { SenderName = sender.given_name, ProfileImageUrl = sender.ProfileImageName, MessageContents = messageToSend }, context, "~/Views/Messages/P2PMessageEmail.cshtml");
                    //            }
                    //        }
                    //    }

                    //}

                    thread = new P2PMessageThread()
                    {
                        Messages           = new List <P2PMessage>(),
                        InitialSenderId    = user1,
                        InitialRecipientId = user2,
                    };
                    cmsDb.UserMessageThreads.Add(thread);
                }
                thread.InitialRecipientDeletionDate = null;
                thread.InitialSenderDeletionDate    = null;
                var message = new P2PMessage()
                {
                    Message    = EncryptMessage(messageToSend),
                    SenderName = string.Format("{0} {1}", sender.given_name, sender.family_name),
                    SenderId   = (int)sender.id,
                    SentTime   = DateTime.UtcNow
                };
                thread.Messages.Add(message);
                cmsDb.SaveChanges();
                response.Message = new P2PMessageResponseModel()
                {
                    SentTime      = message.SentTime,
                    SentByMe      = message.SenderId == user1,
                    DeliveredTime = message.DeliveredTime,
                    Message       = messageToSend,
                    MessageId     = message.P2PMessageId,
                    ReadTime      = message.ReadTime,
                    UUID          = uuid //NOTE: Used by the client to tie up sent messages.
                };

                ProcessOneMessage(cmsDb, message);
            }

            return(response);
        }
Example #20
0
        public static List <MessageViewModel> ViewAllMessages(IbaCmsDbContext cmsDb)
        {
            var msgs = cmsDb.CmsMessages.OrderByDescending(m => m.Created).Where(m => m.Status != CmsMessageStatus.Archived).ToList();

            return(msgs.Select(msg => MsgToMessageViewModel(msg, false)).ToList());
        }
Example #21
0
        public static DeviceUpdateResponseModel UpdateDevice(IbaCmsDbContext cmsDb, DeviceUpdateRequestModel model, decimal ibaRecordId)
        {
            const string version = "2";
            var          result  = new DeviceUpdateResponseModel();

            var device = cmsDb.Devices.FirstOrDefault(d => d.DeviceUUID == model.DeviceUUID);

            if (device != null)
            {
                if (device.DeviceOwner.IbaId != ibaRecordId)
                {
                    //note: Update device to new owner.
                    var newOwner = cmsDb.DeviceOwners.FirstOrDefault(o => o.IbaId == ibaRecordId);
                    if (newOwner == null)
                    {
                        newOwner = new DeviceOwner
                        {
                            IbaId   = ibaRecordId,
                            Devices = new List <Device> {
                                device
                            },
                            LastDeviceUpdate = DateTime.UtcNow,
                            NamedUserId      = ibaRecordId.ToString()
                        };
                        cmsDb.DeviceOwners.Add(newOwner);
                    }

                    device.DeviceOwner = newOwner;
                }
                device.DeviceOwner.NamedUserId = ibaRecordId.ToString();

                if (device.PushToken == model.PushToken)
                {
                    device.DeviceOwner.LastDeviceUpdate = DateTime.UtcNow;
                    cmsDb.SaveChanges();
                    return(result);
                }
                try
                {
                    device.PushToken  = model.PushToken;
                    device.DeviceType = model.DeviceType;

                    device.ApiVersion = version;
                    device.UpdatedOn  = DateTime.UtcNow;
                    device.DeviceOwner.LastDeviceUpdate = DateTime.UtcNow;
                    cmsDb.SaveChanges();
                    return(result);
                }
                catch (Exception)
                {
                    result.SetError(HttpStatusCode.InternalServerError, "Could not update the Push Token");
                }
            }
            var owner = cmsDb.DeviceOwners.FirstOrDefault(o => o.IbaId == ibaRecordId);

            device = new Device
            {
                DeviceUUID = model.DeviceUUID,
                ApiVersion = version,
                DeviceType = model.DeviceType,
                PushToken  = model.PushToken,
                UpdatedOn  = DateTime.UtcNow
            };
            if (owner == null)
            {
                owner = new DeviceOwner
                {
                    IbaId   = ibaRecordId,
                    Devices = new List <Device> {
                        device
                    },
                    LastDeviceUpdate = DateTime.UtcNow
                };
                cmsDb.DeviceOwners.Add(owner);
            }
            else
            {
                owner.Devices.Add(device);
                owner.LastDeviceUpdate = DateTime.UtcNow;
            }
            try
            {
                cmsDb.SaveChanges();
            }
            catch (Exception)
            {
                result.SetError(HttpStatusCode.InternalServerError, "Could not update the Push Token");
            }
            return(result);
        }
Example #22
0
        //NOTE: Paging not currently supported in app.
        public static ConferenceBuildEventResponseModel GetConferenceWithBuildingEventsById(IbaCmsDbContext db, IBAEntities1 ibaDb, int conferenceId, decimal userId, int take = 20, int skip = 0)
        {
            var conference = ibaDb.conf_conference.SingleOrDefault(r => r.id == conferenceId);

            if (conference != null)
            {
                return(new ConferenceBuildEventResponseModel
                {
                    Start = AppSettings.ConferenceStart,
                    End = AppSettings.ConferenceEnd,
                    Venue = conference.venue,
                    Name = conference.title,
                    Events = GetEventsForConferenceById(db, ibaDb, conferenceId, userId, take, skip),
                    Buildings = GetEventsForConferenceById(db, ibaDb, conferenceId, take, skip)
                });
            }
            return(new ConferenceBuildEventResponseModel());
        }
Example #23
0
        public static List <ConferenceBuildingResponseModel> GetEventsForConferenceById(IbaCmsDbContext db, IBAEntities1 ibaDb, int conferenceId, int take = 20, int skip = 0)
        {
            var buildings = db.EventBuildings.Where(r => r.ConferenceId == conferenceId).Select(t => new ConferenceBuildingResponseModel()
            {
                BuildingId   = t.ScheduleEventBuildingId,
                BuildingName = t.Name,
                Floors       = db.FloorNames.Where(r => r.Building.ScheduleEventBuildingId == t.ScheduleEventBuildingId).Select(x => new ConferenceBuildingFloorResponseModel()
                {
                    Name       = x.Name,
                    FloorIndex = x.Floor
                }).ToList()
            }).ToList();

            return(buildings);
        }