예제 #1
0
 public async Task <IActionResult> FilterMails(MailboxViewModel viewModel, [FromQuery] int pageNumber = 1)
 => View("Index", viewModel.FilterMails(await mailboxService.FilterMails(MailFiltersParams.Build
                                                                         (
                                                                             viewModel.Subject,
                                                                             viewModel.OnlyFavorites,
                                                                             viewModel.SortType
                                                                         ).CurrentPage(pageNumber) as MailFiltersParams)));
예제 #2
0
        public async Task <IActionResult> Mail(int?retrieveThreadID)
        {
            var currid = GetUserID();

            var viewModel = new MailboxViewModel();

            viewModel.Threads = await _context.Threads
                                .Include(c => c.Conversations)
                                .ThenInclude(m => m.Message)
                                .ThenInclude(mp => mp.Profile)
                                .Include(p => p.InitiatorProfile)
                                .Include(r => r.ReceiverProfile)
                                .Where(t => t.InitiatorID == currid || t.ReceiverID == currid)
                                .ToListAsync();

            if (retrieveThreadID != null)
            {
                Thread thread = viewModel.Threads
                                .Where(t => t.ThreadID == retrieveThreadID)
                                .Single();

                viewModel.Messages = thread.Conversations
                                     .Select(c => c.Message);

                foreach (Message m in viewModel.Messages)
                {
                    m.Profile = _context.Profiles
                                .Where(i => i.ProfileID == m.MsgSenderID)
                                .Single();
                }
            }

            return(View(viewModel));
            //return View(await _context.Threads.ToListAsync());
        }
예제 #3
0
        // Mailbox user
        public IActionResult Mailbox()
        {
            if (!_auth.Authorise(RolesEnum.Admin, _context)) // Authorise the user is an admin
            {
                return(Redirect("~/Project/Dashboard"));
            }

            // Get a new View model
            var vm = new MailboxViewModel();

            // Instanciate the mail list
            vm.MailList = new List <FormattedRequest>();

            // Go through every request in admin requests
            foreach (var i in _context.AdminRequests.Where(r => r.RequestId > 0))
            {
                // Create a new formatted request and add all the fields
                var temp = new FormattedRequest();
                temp.Name          = _context.Users.First(u => u.UserId == i.SentByUserId).UserName;
                temp.Description   = i.RequestDescription;
                temp.Responded     = i.Responded;
                temp.Response      = i.Response;
                temp.DateRequested = i.DateRequested;
                temp.DateResponded = i.DateResponded;
                temp.RequestType   = _context.RequestTypes.First(u => u.RequestTypeId == i.RequestTypeId).RequestName;
                temp.RequestId     = i.RequestId;

                // Add the new formatted request to the view model
                vm.MailList.Add(temp);
            }

            // Return the view model
            return(View(vm));
        }
예제 #4
0
        public async Task <IActionResult> Send([Bind("ReceiverID", "Header", "Body")] MailboxViewModel mailBox)
        {
            if (ModelState.IsValid)
            {
                var currid    = GetUserID();
                var addThread = new Thread();
                addThread.InitiatorID = currid;
                addThread.ReceiverID  = mailBox.ReceiverID;
                _context.Add(addThread);
                await _context.SaveChangesAsync();

                var addMessage = new Message();
                addMessage.MsgHeader   = mailBox.Header;
                addMessage.MsgBody     = mailBox.Body;
                addMessage.MsgSenderID = currid;
                _context.Add(addMessage);
                await _context.SaveChangesAsync();

                var addConversation = new Conversation();
                addConversation.MessageID = addMessage.MessageID;
                addConversation.ThreadID  = addThread.ThreadID;
                _context.Add(addConversation);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Mail)));
            }

            var testList = _context.RunGreenLakeUsers
                           .Select(p => new { p.LinkID, p.FirstName, p.LastName })
                           .ToList();

            mailBox.ReceiverList = new SelectList(testList, "LinkID", "FirstName");
            return(View(mailBox));
        }
예제 #5
0
        public ActionResult Mailbox(string code)
        {
            var model = new MailboxViewModel()
            {
                Code = code
            };

            return(View(model));
        }
예제 #6
0
        // GET: MailboxController/Create
        public ActionResult Create()
        {
            ViewData["Title"] = $"Create mailbox";

            MailboxViewModel mailbox = new MailboxViewModel
            {
                MailRetention = 30
            };

            return(View(mailbox));
        }
예제 #7
0
        // GET: Threads/Create
        public IActionResult Send()
        {
            var viewModel = new MailboxViewModel();
            var testList  = _context.RunGreenLakeUsers
                            .Select(p => new { p.LinkID, p.FirstName, p.LastName })
                            .ToList();

            viewModel.ReceiverList = new SelectList(testList, "LinkID", "FirstName");

            return(View(viewModel));
        }
        private MailboxViewModel CreateTestEmails()
        {
            MailboxViewModel mailboxViewModel = new MailboxViewModel();

            mailboxViewModel.Inbox = new List <EMail>()
            {
                new EMail()
                {
                    From = "Bill Gates", Subject = "Loan question", DateReceived = DateTime.Now.Date.AddDays(-2).AddHours(10).AddMinutes(28).AddSeconds(46)
                },
                new EMail()
                {
                    From = "Mark Zuckerberg", Subject = "When?", DateReceived = DateTime.Now.Date.AddDays(-1).AddHours(12).AddMinutes(36).AddSeconds(18)
                },
                new EMail()
                {
                    From = "Steven Spielberg", Subject = "I would like to sign it.", DateReceived = DateTime.Now
                }
            };

            mailboxViewModel.Sent = new List <EMail>()
            {
                new EMail()
                {
                    From = "Mark Zuckerberg", Subject = "On monday at 11am", DateReceived = DateTime.Now.Date.AddDays(-2).AddHours(8).AddMinutes(35).AddSeconds(18)
                },
                new EMail()
                {
                    From = "Steven Spielberg", Subject = "Contract", DateReceived = DateTime.Now.Date.AddDays(-1).AddHours(6).AddMinutes(54).AddSeconds(22)
                },
                new EMail()
                {
                    From = "Bill Gates", Subject = "Loan answer.", DateReceived = DateTime.Now.Date.AddHours(-1).AddMinutes(2).AddSeconds(37)
                }
            };

            mailboxViewModel.Draft = new List <EMail>()
            {
                new EMail()
                {
                    From = "John Smith", Subject = "Draft", DateReceived = DateTime.Now.Date.AddDays(-2).AddHours(10).AddMinutes(32).AddSeconds(23)
                },
                new EMail()
                {
                    From = "Tom Johanson", Subject = "Draft", DateReceived = DateTime.Now.Date.AddDays(-1).AddHours(13).AddMinutes(13).AddSeconds(41)
                },
                new EMail()
                {
                    From = "Justin McGreg", Subject = "Draft", DateReceived = DateTime.Now.Date.AddDays(-1).AddHours(16).AddMinutes(19).AddSeconds(50)
                }
            };

            return(mailboxViewModel);
        }
예제 #9
0
        public ActionResult Create([Bind("Name, SmtpPort, SmtpHost, ImapEnabled, ImapSSLEnabled, ImapHost, ImapPort, ImapUsername, ImapPassword, Passthrough, MailRetention")] MailboxViewModel mailbox)
        {
            if (ModelState.IsValid)
            {
                mailbox.MailboxId = Guid.NewGuid();
                mailbox.Username  = Guid.NewGuid().ToString().Replace("-", string.Empty);
                mailbox.Password  = Guid.NewGuid().ToString().Replace("-", string.Empty);
                this.mailboxRepository.Create(this.MapMailboxViewModelToMailbox(mailbox));
                return(RedirectToAction(nameof(Index)));
            }

            return(View(mailbox));
        }
예제 #10
0
        public async Task <IActionResult> Reply([Bind("MsgID", "Header", "Body")] MailboxViewModel sendReply)
        {
            if (ModelState.IsValid)
            {
                //get thread ID
                var currid = GetUserID();

                var thread = _context.Conversations
                             .Where(m => m.MessageID == sendReply.MsgID)
                             .Select(p => p.ThreadID)
                             .FirstOrDefault();

                var addMessage = new Message();
                addMessage.MsgHeader   = sendReply.Header;
                addMessage.MsgBody     = sendReply.Body;
                addMessage.MsgSenderID = currid;
                _context.Add(addMessage);
                await _context.SaveChangesAsync();

                var addConversation = new Conversation();
                addConversation.MessageID = addMessage.MessageID;
                addConversation.ThreadID  = thread;
                _context.Add(addConversation);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Mail)));
            }
            else
            {
                sendReply.MessageReplyingTo = _context.Messages
                                              .Where(m => m.MessageID == sendReply.MsgID)
                                              .Single();

                sendReply.ReceiverProfile = _context.Profiles
                                            .Where(p => p.ProfileID == sendReply.MessageReplyingTo.MsgSenderID)
                                            .Single();

                sendReply.ReceiverUser = _context.RunGreenLakeUsers
                                         .Where(u => u.LinkID == sendReply.ReceiverProfile.LinkID)
                                         .Single();

                return(View(sendReply));
            }
        }
예제 #11
0
        public ActionResult Index()
        {
            var vm = new MailboxViewModel();

            vm.Notes = this.Context.Notes
                       .Where(x => x.UserId == this.UserContext.Id)
                       .Where(x => x.IsActive.Equals(true))
                       .OrderByDescending(x => x.Sent)
                       .Select(x => new NoteSkinny
            {
                IsRead = x.IsRead,
                NoteId = x.NoteId,
                Sent   = x.Sent,
                Body   = x.Body,
                Title  = x.Title,
            })
                       .ToList();

            return(View(vm));
        }
예제 #12
0
        public ActionResult Edit(Guid id, [Bind("MailboxId, Name, SmtpPort, SmtpHost, ImapEnabled, ImapSSLEnabled, ImapHost, ImapPort, ImapUsername, ImapPassword, Origin, Passthrough, MailRetention")] MailboxViewModel mailbox)
        {
            if (Guid.Empty == id)
            {
                return(this.BadRequest());
            }

            if (id != mailbox.MailboxId)
            {
                return(this.NotFound());
            }

            if (ModelState.IsValid)
            {
                this.mailboxRepository.Update(this.MapMailboxViewModelToMailbox(mailbox));
                return(RedirectToAction(mailbox.Origin, new { Id = mailbox.MailboxId }));
            }

            return(View(mailbox));
        }
예제 #13
0
        // GET: Threads
        public async Task <IActionResult> Index(int?retrieveThreadID)
        {
            var viewModel = new MailboxViewModel();

            viewModel.Threads = await _context.Threads
                                .Include(c => c.Conversations)
                                .ThenInclude(m => m.Message)
                                .ToListAsync();

            if (retrieveThreadID != null)
            {
                Thread thread = viewModel.Threads
                                .Where(t => t.ThreadID == retrieveThreadID)
                                .Single();

                viewModel.Messages = thread.Conversations.Select(c => c.Message);
            }
            return(View(viewModel));

            //return View(await _context.Threads.ToListAsync());
        }
예제 #14
0
        private Mailbox MapMailboxViewModelToMailbox(MailboxViewModel mailboxViewModel)
        {
            if (mailboxViewModel == null)
            {
                return(new Mailbox());
            }

            return(new Mailbox
            {
                MailboxId = mailboxViewModel.MailboxId,
                Name = mailboxViewModel.Name,
                Username = mailboxViewModel.Username,
                Password = mailboxViewModel.Password,
                ImapEnabled = mailboxViewModel.ImapEnabled,
                ImapHost = mailboxViewModel.ImapHost,
                ImapPort = mailboxViewModel.ImapPort.HasValue ? mailboxViewModel.ImapPort.Value : 0,
                ImapSSLEnabled = mailboxViewModel.ImapSSLEnabled,
                ImapUsername = mailboxViewModel.ImapUsername,
                ImapPassword = mailboxViewModel.ImapPassword,
                Passthrough = mailboxViewModel.Passthrough,
                MailRetention = mailboxViewModel.MailRetention
            });
        }
예제 #15
0
        public IActionResult Reply(int?msgid)
        {
            if (msgid == null)
            {
                return(RedirectToAction(nameof(Mail)));
            }
            else
            {
                var replyView = new MailboxViewModel();
                replyView.MessageReplyingTo = _context.Messages
                                              .Where(m => m.MessageID == msgid)
                                              .Single();

                replyView.ReceiverProfile = _context.Profiles
                                            .Where(p => p.ProfileID == replyView.MessageReplyingTo.MsgSenderID)
                                            .Single();

                replyView.ReceiverUser = _context.RunGreenLakeUsers
                                         .Where(u => u.LinkID == replyView.ReceiverProfile.LinkID)
                                         .Single();

                return(View(replyView));
            }
        }