Example #1
0
        // GET: MemberArea/Messages/Create
        public ActionResult Create(int?receiverId)
        {
            UserInt user = _uow.GetRepository <IUserIntRepository>().GetById(receiverId);

            if (user == null)
            {
                return(HttpNotFound());
            }

            BLL.ViewModels.MessageThread.CreateModel createModel = new BLL.ViewModels.MessageThread.CreateModel();
            return(View(createModel));
        }
Example #2
0
        public ActionResult Create([Bind(Include = "Title,Text")] BLL.ViewModels.MessageThread.CreateModel createModel, int?receiverId)
        {
            UserInt user = _uow.GetRepository <IUserIntRepository>().GetById(receiverId);

            if (user == null && User.Identity.GetUserId <int>() != receiverId)
            {
                return(HttpNotFound());
            }


            if (ModelState.IsValid)
            {
                UserInt        sender         = UserIntFactory.CreateFromIdentity(_uow, User);
                NewThreadModel newThreadModel = new NewThreadModel(sender, user);
                newThreadModel.Prepare(createModel.Title, createModel.Text);

                int id = _uow.GetRepository <IMessageThreadRepository>().Add(newThreadModel.MessageThread);
                _uow.Commit();

                Message message = newThreadModel.Message;
                message.MessageThreadId = id;
                message.AuthorId        = newThreadModel.MessageThread.AuthorId;
                message.Status          = MessageStatus.New;

                int messageId = _uow.GetRepository <IMessageRepository>().Add(message);

                foreach (var messageReceiver in newThreadModel.MessageReceivers)
                {
                    messageReceiver.MessageId = messageId;
                    _uow.GetRepository <IMessageReceiverRepository>().Add(messageReceiver);
                }

                foreach (var messageThreadReceiver in newThreadModel.MessageThreadReceivers)
                {
                    messageThreadReceiver.MessageThreadId = id;
                    _uow.GetRepository <IMessageThreadReceiverRepository>().Add(messageThreadReceiver);
                }

                _uow.Commit();

                return(RedirectToAction("Index"));
            }

            return(View(createModel));
        }