예제 #1
0
        private DynamicResponse <List <DiscussionParticipantsLO> > GetDiscussionParticipants(long discussionId)
        {
            #region Accessors
            DiscussionParticipantAccessor _DiscussionParticipantAccessor = new DiscussionParticipantAccessor();
            UserAccessor _UserAccessor = new UserAccessor();
            #endregion
            DynamicResponse <List <DiscussionParticipantsLO> > response = new DynamicResponse <List <DiscussionParticipantsLO> >();
            try
            {
                List <DiscussionParticipant> participantsModel = new List <DiscussionParticipant>();
                participantsModel = _DiscussionParticipantAccessor.GetList(discussionId);

                List <DiscussionParticipantsLO> data = new List <DiscussionParticipantsLO>();

                //get user for each useid in the discussion participants
                User user = new User();
                foreach (DiscussionParticipant item in participantsModel)
                {
                    user = new User();
                    user = _UserAccessor.Get(item.UserId);

                    if (user == null)
                    {
                        response.HttpStatusCode = HttpStatusCode.InternalServerError;
                        response.Message        = "Please try again later";
                        response.ServerMessage  = "no participant";

                        return(response);
                    }

                    data.Add(new DiscussionParticipantsLO {
                        Email     = user.Email,
                        FirstName = user.FirstName,
                        LastName  = user.LastName
                    });
                }

                response.Data           = data;
                response.HttpStatusCode = HttpStatusCode.OK;

                return(response);
            }
            catch (Exception ex)
            {
                response.HttpStatusCode = HttpStatusCode.InternalServerError;
                response.Message        = "Please try again later.";
                response.ServerMessage  = ex.Message;

                return(response);
            }
        }
예제 #2
0
        public DynamicResponse <DiscussionLO> GetWholeDiscussion(long discussionId)
        {
            DynamicResponse <DiscussionLO> response = new DynamicResponse <DiscussionLO>();

            #region Accessor
            DiscussionAccessor _DiscussionAccessor = new DiscussionAccessor();
            UserAccessor       _UserAccessor       = new UserAccessor();
            #endregion
            try
            {
                User         user = new User();
                DiscussionLO data = new DiscussionLO();
                //get list of discussion
                Discussion main = _DiscussionAccessor.Get(discussionId);
                if (main == null)
                {
                    response.HttpStatusCode = HttpStatusCode.InternalServerError;
                    response.Message        = "Please try again later.";
                    response.ServerMessage  = "no discussion";

                    return(response);
                }

                data.Subject        = main.Subject;
                data.DiscussionDate = (DateTime)main.SysDate;
                data.isClosed       = main.isClosed;
                data.Message        = main.Message;

                user = _UserAccessor.Get(main.SenderId);
                UserLO mainSender = new UserLO();
                mainSender.Email     = user.Email;
                mainSender.FirstName = user.FirstName;
                mainSender.LastName  = user.LastName;

                data.MainSender = mainSender;

                DynamicResponse <List <DiscussionFileLO> > mainfiles = new DynamicResponse <List <DiscussionFileLO> >();
                //get files
                mainfiles = GetDiscussionFile(main.Id);

                if (mainfiles.HttpStatusCode != HttpStatusCode.OK)
                {
                    response.HttpStatusCode = mainfiles.HttpStatusCode;
                    response.Message        = mainfiles.Message;
                    response.ServerMessage  = mainfiles.ServerMessage;

                    return(response);
                }

                data.Files = mainfiles.Data;
                //get replies for the discussion
                #region Replies


                List <Discussion> replies = new List <Discussion>();

                replies = _DiscussionAccessor.GetReplies(discussionId);

                List <DiscussionContentLO> contentOfDiscussion   = new List <DiscussionContentLO>();
                DynamicResponse <List <DiscussionFileLO> > files = new DynamicResponse <List <DiscussionFileLO> >();
                foreach (Discussion item in replies)
                {
                    //get files
                    files = GetDiscussionFile(item.Id);

                    if (files.HttpStatusCode != HttpStatusCode.OK)
                    {
                        response.HttpStatusCode = files.HttpStatusCode;
                        response.Message        = files.Message;
                        response.ServerMessage  = files.ServerMessage;

                        return(response);
                    }

                    user = _UserAccessor.Get(item.SenderId);
                    UserLO Sender = new UserLO();
                    Sender.Email     = user.Email;
                    Sender.FirstName = user.FirstName;
                    Sender.LastName  = user.LastName;

                    contentOfDiscussion.Add(new DiscussionContentLO
                    {
                        Body     = item.Message,
                        SentDate = (DateTime)item.SysDate,
                        Sender   = Sender,
                        Files    = files.Data
                    });
                }

                data.Discussions = contentOfDiscussion;

                #endregion

                //get participants
                #region Participants
                DynamicResponse <List <DiscussionParticipantsLO> > participants = GetDiscussionParticipants(discussionId);
                if (participants.HttpStatusCode != HttpStatusCode.OK)
                {
                    response.HttpStatusCode = participants.HttpStatusCode;
                    response.Message        = participants.Message;
                    response.ServerMessage  = participants.ServerMessage;

                    return(response);
                }

                data.Participants = participants.Data;
                #endregion


                response.HttpStatusCode = HttpStatusCode.OK;
                response.Data           = data;
                return(response);
            }
            catch (Exception ex)
            {
                response.HttpStatusCode = HttpStatusCode.InternalServerError;
                response.Message        = "Please try again later";
                response.ServerMessage  = ex.Message;
                return(response);
            }
        }
예제 #3
0
        private DynamicResponse <DiscussionLO> GetBasicInfo(long discussionId)
        {
            DynamicResponse <DiscussionLO> response = new DynamicResponse <DiscussionLO>();

            #region Accessors
            DiscussionAccessor _DiscussionAccessor = new DiscussionAccessor();
            UserAccessor       _UserAccessor       = new UserAccessor();
            #endregion
            try
            {
                DiscussionLO data = new DiscussionLO();

                //get the discussion
                Discussion discussionModel = _DiscussionAccessor.Get(discussionId);

                //subject and id
                data.Subject = discussionModel.Subject;
                data.Id      = discussionModel.Id;


                //original sender
                #region Original Sender
                User sender = _UserAccessor.Get(discussionModel.SenderId);
                if (sender == null)
                {
                    response.HttpStatusCode = HttpStatusCode.InternalServerError;
                    response.Message        = "Please try again later.";
                    response.ServerMessage  = "no sender";

                    return(response);
                }
                UserLO originalSender = new UserLO();
                originalSender.Email     = sender.Email;
                originalSender.FirstName = sender.FirstName;
                originalSender.LastName  = sender.LastName;

                data.MainSender = originalSender;

                #endregion

                //isclosed
                data.isClosed = discussionModel.isClosed;

                //number of replies
                List <Discussion> replies = new List <Discussion>();
                replies = _DiscussionAccessor.GetReplies(discussionId);

                data.NumberOfReplies = replies.Count;


                //last replier
                #region last repkier
                if (replies.Count != 0)
                {
                    User lastreplier = _UserAccessor.Get(replies[replies.Count - 1].SenderId);
                    if (lastreplier == null)
                    {
                        response.HttpStatusCode = HttpStatusCode.InternalServerError;
                        response.Message        = "Please try again later.";
                        response.ServerMessage  = "no sender";

                        return(response);
                    }
                    UserLO lastReplier = new UserLO();
                    lastReplier.Email     = sender.Email;
                    lastReplier.FirstName = sender.FirstName;
                    lastReplier.LastName  = sender.LastName;

                    data.LastSender = lastReplier;
                }

                #endregion

                response.HttpStatusCode = HttpStatusCode.OK;
                response.Data           = data;

                return(response);
            }
            catch (Exception ex)
            {
                response.HttpStatusCode = HttpStatusCode.InternalServerError;
                response.Message        = "Please try again later";
                response.ServerMessage  = ex.Message;

                return(response);
            }
        }