Exemple #1
0
        public HttpResponseMessage NewChannel([FromBody] NewChannel channel)
        {
            try
            {
                var messageGroup  = new MESSAGING_GROUP();
                var messageGroups = db.MESSAGING_GROUP.ToList();
                var conference    = db.CONFERENCEs.SingleOrDefault(x => x.CONFERENCE_ID == channel.CONFERENCE_ID);
                if (conference == null)
                {
                    return(ResponseFail(StringResource.Conference_do_not_exist));
                }
                else
                {
                    if (messageGroups.Count > 0)
                    {
                        messageGroup.MESSAGING_GROUP_ID = messageGroups.Last().MESSAGING_GROUP_ID + 1;
                    }
                    else
                    {
                        messageGroup.MESSAGING_GROUP_ID = 0;
                    }
                    messageGroup.MESSAGING_GROUP_NAME    = channel.MESSAGING_GROUP_NAME;
                    messageGroup.MESSAGING_GROUP_NAME_EN = channel.MESSAGING_GROUP_NAME_EN;
                    messageGroup.AVATAR_PICTURE_FILENAME = channel.AVATAR_PICTURE_FILENAME;
                    messageGroup.CONFERENCE_ID           = channel.CONFERENCE_ID;
                    messageGroup.CONFERENCE_NAME         = conference.CONFERENCE_NAME;
                    messageGroup.CONFERENCE_NAME_EN      = conference.CONFERENCE_NAME_EN;
                    messageGroup.PUBLIC_OR_PRIVATE_GROUP = channel.PUBLIC_OR_PRIVATE_GROUP;
                    messageGroup.CREATED_DATETIME        = DateTime.Now;
                    messageGroup.CREATED_UserName        = channel.CREATED_UserName;
                    db.MESSAGING_GROUP.Add(messageGroup);
                    db.SaveChanges();

                    foreach (MessageGroupMember item in channel.MEMBERS)
                    {
                        var member = new ACCOUNT_MESSAGING_GROUP_MEMBERSHIP();
                        member.UserName                  = item.UserName;
                        member.MESSAGING_GROUP_ID        = messageGroup.MESSAGING_GROUP_ID;
                        member.START_DATETIME            = DateTime.Now;
                        member.CREATED_UserName          = channel.CREATED_UserName;
                        member.MESSAGING_GROUP_MODERATOR = item.UserName == channel.CREATED_UserName ? true : false;
                        member.GROUP_ASSIGNED_OR_GROUP_JOIN_REQUEST_OR_GROUP_JOIN_REQUEST_APPROVED = "GROUP ASSIGNED";
                        db.ACCOUNT_MESSAGING_GROUP_MEMBERSHIP.Add(member);
                        db.SaveChanges();
                    }

                    return(ResponseSuccess(StringResource.Success, channel));
                }
            }
            catch
            {
                return(ResponseFail(StringResource.Can_not_create_new_channel));
            }
        }
Exemple #2
0
        public HttpResponseMessage JoinChannel(string userName, int MESSAGING_GROUP_ID, int conferenceId)
        {
            var account            = db.ACCOUNTs.SingleOrDefault(x => x.UserName == userName);
            var group              = db.MESSAGING_GROUP.SingleOrDefault(x => x.MESSAGING_GROUP_ID == MESSAGING_GROUP_ID);
            var conference         = db.CONFERENCEs.SingleOrDefault(x => x.CONFERENCE_ID == conferenceId);
            var joinRequestIsExist = db.ACCOUNT_MESSAGING_GROUP_MEMBERSHIP.Where(x => x.UserName == userName && x.MESSAGING_GROUP_ID == MESSAGING_GROUP_ID && x.GROUP_ASSIGNED_OR_GROUP_JOIN_REQUEST_OR_GROUP_JOIN_REQUEST_APPROVED == "GROUP JOIN REQUEST" && (x.DELETED == false || x.DELETED == null)).ToList();
            var joined             = db.ACCOUNT_MESSAGING_GROUP_MEMBERSHIP.Where(x => x.UserName == userName && x.MESSAGING_GROUP_ID == MESSAGING_GROUP_ID && (x.GROUP_ASSIGNED_OR_GROUP_JOIN_REQUEST_OR_GROUP_JOIN_REQUEST_APPROVED == "GROUP ASSIGNED" || x.GROUP_ASSIGNED_OR_GROUP_JOIN_REQUEST_OR_GROUP_JOIN_REQUEST_APPROVED == "GROUP JOIN REQUEST APPROVED") && (x.DELETED == false || x.DELETED == null)).ToList();

            if (account == null)
            {
                return(ResponseFail(StringResource.Account_does_not_exist));
            }
            else if (group == null)
            {
                return(ResponseFail(StringResource.Message_group_do_not_exist));
            }
            else if (conference == null)
            {
                return(ResponseFail(StringResource.Conference_do_not_exist));
            }
            else if (joinRequestIsExist.Count > 0)
            {
                return(ResponseFail(StringResource.You_have_submitted_your_request));
            }
            else if (joined.Count > 0)
            {
                return(ResponseFail(StringResource.You_joined_the_group));
            }
            else
            {
                var member = new ACCOUNT_MESSAGING_GROUP_MEMBERSHIP();
                member.UserName                  = account.UserName;
                member.MESSAGING_GROUP_ID        = MESSAGING_GROUP_ID;
                member.START_DATETIME            = DateTime.Now;
                member.CREATED_UserName          = group.CREATED_UserName;
                member.MESSAGING_GROUP_MODERATOR = userName == group.CREATED_UserName ? true : false;
                member.GROUP_ASSIGNED_OR_GROUP_JOIN_REQUEST_OR_GROUP_JOIN_REQUEST_APPROVED = StringResource.GROUP_JOIN_REQUEST;
                db.ACCOUNT_MESSAGING_GROUP_MEMBERSHIP.Add(member);
                db.SaveChanges();
                return(ResponseSuccess(StringResource.Success));
            }
        }
Exemple #3
0
        public HttpResponseMessage SendMessageGroup([FromBody] ChatGroup chat)
        {
            var accountSend = db.ACCOUNTs.SingleOrDefault(x => x.UserName == chat.data.UserName);
            var group       = db.MESSAGING_GROUP.SingleOrDefault(x => x.MESSAGING_GROUP_ID == chat.data.MESSAGING_GROUP_ID);
            var conference  = db.CONFERENCEs.SingleOrDefault(x => x.CONFERENCE_ID == chat.data.CONFERENCE_ID);

            if (accountSend == null)
            {
                return(ResponseFail(StringResource.Account_does_not_exist));
            }
            else if (group == null)
            {
                return(ResponseFail(StringResource.Message_group_do_not_exist));
            }
            else if (conference == null)
            {
                return(ResponseFail(StringResource.Conference_do_not_exist));
            }
            else
            {
                var listMember = db.ACCOUNT_MESSAGING_GROUP_MEMBERSHIP.Where(x => x.MESSAGING_GROUP_ID == chat.data.MESSAGING_GROUP_ID &&
                                                                             (x.GROUP_ASSIGNED_OR_GROUP_JOIN_REQUEST_OR_GROUP_JOIN_REQUEST_APPROVED == "GROUP ASSIGNED" || x.GROUP_ASSIGNED_OR_GROUP_JOIN_REQUEST_OR_GROUP_JOIN_REQUEST_APPROVED == "GROUP JOIN REQUEST APPROVED") &&
                                                                             (x.DELETED == false || x.DELETED == null)).ToList();

                var adminGroup = new ACCOUNT_MESSAGING_GROUP_MEMBERSHIP();
                adminGroup.UserName = group.CREATED_UserName;
                listMember.Add(adminGroup);

                /*Thêm vào CSDL*/
                var messageFeed = new MESSAGE_FEED();
                messageFeed.FROM_DATE                           = DateTime.Now;
                messageFeed.UserName                            = chat.data.UserName;
                messageFeed.CURRENT_FIRST_NAME                  = accountSend.CURRENT_FIRST_NAME;
                messageFeed.CURRENT_MIDDLE_NAME                 = accountSend.CURRENT_MIDDLE_NAME;
                messageFeed.CURRENT_LAST_NAME                   = accountSend.CURRENT_LAST_NAME;
                messageFeed.CONFERENCE_ID                       = chat.data.CONFERENCE_ID;
                messageFeed.CONFERENCE_NAME                     = conference.CONFERENCE_NAME;
                messageFeed.CONFERENCE_NAME_EN                  = conference.CONFERENCE_NAME_EN;
                messageFeed.PUBLIC_OR_PRIVATE_MESSAGE           = "PRIVATE";
                messageFeed.MESSAGE_CONTENT                     = chat.Body;
                messageFeed.RECIPIENT_MESSAGING_GROUP_ID_1      = group.MESSAGING_GROUP_ID;
                messageFeed.RECIPIENT_MESSAGING_GROUP_NAME_1    = group.MESSAGING_GROUP_NAME;
                messageFeed.RECIPIENT_MESSAGING_GROUP_NAME_EN_1 = group.MESSAGING_GROUP_NAME;
                new NewFeedModel().addNewFeed(messageFeed);

                /*Tạo dữ liệu trả về*/
                var msg = new MessageResponse();
                msg.MESSAGE_FEED_ID                     = messageFeed.MESSAGE_FEED_ID;
                msg.MESSAGE_CONTENT                     = messageFeed.MESSAGE_CONTENT;
                msg.IsMoreThanOneDay                    = false;
                msg.IsToDay                             = DateTimeFormater.CheckIsToday(messageFeed.FROM_DATE.Value);
                msg.TimeFormat                          = DateTimeFormater.GetTimeAgo(messageFeed.FROM_DATE.Value);
                msg.Time                                = messageFeed.FROM_DATE.Value;
                msg.UserName                            = messageFeed.UserName;
                msg.PERSON_ID_SEND                      = accountSend.PERSON_ID;
                msg.ORGANIZATION_SEND                   = accountSend.CURRENT_HOME_ORGANIZATION_NAME;
                msg.ORGANIZATION_EN_SEND                = accountSend.CURRENT_HOME_ORGANIZATION_NAME_EN;
                msg.Image                               = accountSend.Image;
                msg.FULL_NAME_PERSON_SEND               = Utils.GetFullName(messageFeed.CURRENT_FIRST_NAME, messageFeed.CURRENT_MIDDLE_NAME, messageFeed.CURRENT_LAST_NAME);
                msg.RECIPIENT_MESSAGING_GROUP_ID_1      = messageFeed.RECIPIENT_MESSAGING_GROUP_ID_1;
                msg.RECIPIENT_MESSAGING_GROUP_NAME_1    = messageFeed.RECIPIENT_MESSAGING_GROUP_NAME_1;
                msg.RECIPIENT_MESSAGING_GROUP_NAME_EN_1 = messageFeed.RECIPIENT_MESSAGING_GROUP_NAME_EN_1;
                msg.IS_MESSAGE_GROUP                    = true;

                foreach (ACCOUNT_MESSAGING_GROUP_MEMBERSHIP item in listMember)
                {
                    var memberRecive = db.ACCOUNT_DEVICE_RELATIONSHIP.SingleOrDefault(x => x.UserName == item.UserName);
                    if (memberRecive != null)
                    {
                        var deviceId = memberRecive.DEVICE_TOKEN;
                        if (deviceId != null)
                        {
                            var result  = "-1";
                            var webAddr = "https://fcm.googleapis.com/fcm/send";

                            var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);
                            httpWebRequest.ContentType = "application/json";
                            httpWebRequest.Headers.Add("Authorization:key=" + StringResource.Server_fcm_key);
                            httpWebRequest.Method = "POST";

                            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                            {
                                var notification = new Notification();
                                notification.body     = chat.Body;
                                notification.title    = msg.FULL_NAME_PERSON_SEND;
                                notification.sound    = chat.Sound;
                                notification.priority = chat.Priority;

                                JsonData data = new JsonData();
                                data.Data = JsonConvert.SerializeObject(msg);

                                var json = new DataJson();
                                json.notification = notification;
                                json.data         = data;
                                json.to           = deviceId;

                                streamWriter.Write(JsonConvert.SerializeObject(json));
                                streamWriter.Flush();

                                var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                                {
                                    result = streamReader.ReadToEnd();
                                }
                            }
                        }
                    }
                }

                return(ResponseSuccess(StringResource.Success, msg));
            }
        }