public IHttpActionResult TinNhan(string order, string maSinhVien, string matKhau, int soTrang = 0, int soDong = 1)
        {
            if (string.IsNullOrEmpty(order) || string.IsNullOrEmpty(maSinhVien) || string.IsNullOrEmpty(matKhau))
            {
                return(BadRequest("Tham số truyền vào không hợp lệ !"));
            }

            var current = SinhVienDao.TonTaiSinhVien(maSinhVien, matKhau);

            if (current == false)
            {
                return(BadRequest("Thông tin sinh viên không hợp lệ !"));
            }

            var listTinNhan = new List <TINNHAN>();

            switch (order.ToLower())
            {
            case ORDER_GET_RECEIVED_MESSAGE:
                var soDongTong     = TinNhanDao.GetTongTinNhanDaNhan(maSinhVien);
                var temp           = soDongTong % soDong;
                var subTongSoTrang = soDongTong / soDong;
                var tongSoTrang    = temp == 0 ? subTongSoTrang : subTongSoTrang + 1;
                if (soTrang > tongSoTrang)
                {
                    return(Ok(listTinNhan));
                }
                else
                {
                    var list = TinNhanDao.GetTinNhanDaNhanTheoSoTrang(maSinhVien, soTrang, soDong);
                    return(Ok(list));
                }

            case ORDER_GET_SENT_MESSAGE:
                soDongTong     = TinNhanDao.GetTongTinNhanDaGui(maSinhVien);
                temp           = soDongTong % soDong;
                subTongSoTrang = soDongTong / soDong;
                tongSoTrang    = temp == 0 ? subTongSoTrang : subTongSoTrang + 1;
                if (soTrang > tongSoTrang)
                {
                    return(Ok(listTinNhan));
                }
                else
                {
                    var list = TinNhanDao.GetTinNhanDaGuiTheoSoTrang(maSinhVien, soTrang, soDong);
                    return(Ok(list));
                }

            case ORDER_GET_DELETED_MESSAGE:
                soDongTong     = TinNhanDao.GetTongTinNhanDaXoa(maSinhVien);
                temp           = soDongTong % soDong;
                subTongSoTrang = soDongTong / soDong;
                tongSoTrang    = temp == 0 ? subTongSoTrang : subTongSoTrang + 1;
                if (soTrang > tongSoTrang)
                {
                    return(Ok(listTinNhan));
                }
                else
                {
                    var list = TinNhanDao.GetTinNhanDaXoaTheoSoTrang(maSinhVien, soTrang, soDong);
                    return(Ok(list));
                }

            default:
                break;
            }
            return(Ok(listTinNhan));
        }
        public IHttpActionResult TinNhan(string order, string maSinhVien, string matKhau, int id)
        {
            if (string.IsNullOrEmpty(order) || string.IsNullOrEmpty(maSinhVien) || string.IsNullOrEmpty(matKhau))
            {
                return(BadRequest("Tham số truyền vào không hợp lệ !"));
            }

            var sv = SinhVienDao.TonTaiSinhVien(maSinhVien, matKhau);

            if (sv == false)
            {
                return(BadRequest("Thông tin sinh viên không hợp lệ !"));
            }

            switch (order.ToLower())
            {
            case ORDER_GET_BODY_MESSAGE:
                var ud = TinNhanDao.UpdateThoiDiemXem(id, maSinhVien);
                var tn = TinNhanDao.GetTinNhanTheoId(id);

                if (tn == null || ud == false)
                {
                    return(BadRequest("Mã tin nhắn không tồn tại !"));
                }
                else
                {
                    return(Ok(tn));
                }

            case ORDER_ATTEMP_DELETE_MESSAGE:
                var result = TinNhanDao.AttempDeleteTinNhan(id, maSinhVien);
                if (result)
                {
                    return(Ok());
                }

                return(BadRequest("Chuyển vào thùng rác không thành công, kiểm tra lại mã tin nhắn !"));

            case ORDER_FOREVER_DELETE_MESSAGE:
                var resultDelete = TinNhanDao.ForeverDelete(id, maSinhVien);
                if (resultDelete)
                {
                    return(Ok());
                }

                return(BadRequest("Xóa không thành công, kiểm tra lại mã tin nhắn !"));

            case ORDER_UPDATE_SEEN_TIME:
                var resultUpdate = TinNhanDao.UpdateThoiDiemXem(id, maSinhVien);
                if (resultUpdate)
                {
                    return(Ok());
                }

                return(BadRequest("Cập nhật thời điểm xem không thành công, kiểm tra lại mã tin nhắn và mã người nhận !"));

            case ORDER_RESTORE_MESSAGE:
                var resultRestore = TinNhanDao.RestoreTinNhan(id, maSinhVien);
                if (resultRestore)
                {
                    return(Ok());
                }

                return(BadRequest("Khôi phục không thành công, kiểm tra lại mã tin nhắn !"));

            default:
                break;
            }
            return(NotFound());
        }
        public IHttpActionResult TraLoiTinNhan(string maSinhVien, string matKhau, TinNhan tinNhan)
        {
            if (!SinhVienDao.TonTaiSinhVien(maSinhVien, matKhau))
            {
                return(BadRequest("Thông tin người gửi không đúng"));
            }

            var hoTenNguoiGui = tinNhan.HoTenNguoiGui;
            var maxMaTinNhan  = TinNhanDao.GetMaxMaTinNhan() + 1;

            TINNHAN newTinNhan = new TINNHAN()
            {
                MaTinNhan   = maxMaTinNhan,
                TieuDe      = tinNhan.TieuDe,
                NoiDung     = tinNhan.NoiDung,
                ThoiDiemGui = DateTime.Now
            };

            NGUOIGUI nguoiGui = new NGUOIGUI()
            {
                MaTinNhan     = maxMaTinNhan,
                MaNguoiGui    = tinNhan.MaNguoiGui,
                HoTenNguoiGui = hoTenNguoiGui,
                TINNHAN       = newTinNhan,
                TrangThai     = TinNhanDao.TINNHAN_CHUA_XOA,
                TAIKHOAN      = null
            };

            var nguoiNhans = new List <NGUOINHAN>();

            foreach (var item in tinNhan.NguoiNhans)
            {
                NGUOINHAN nguoiNhan = new NGUOINHAN()
                {
                    MaTinNhan      = maxMaTinNhan,
                    HoTenNguoiNhan = SinhVienDao.GetHoTenTheoTaiKhoan(item.MaNguoiNhan),
                    ThoiDiemXem    = null,
                    TINNHAN        = newTinNhan,
                    TAIKHOAN       = null,
                    TrangThai      = TinNhanDao.TINNHAN_CHUA_XOA,
                    MaNguoiNhan    = item.MaNguoiNhan
                };
                nguoiNhans.Add(nguoiNhan);
            }

            newTinNhan.NGUOIGUIs = new List <NGUOIGUI> {
                nguoiGui
            };
            newTinNhan.NGUOINHANs = nguoiNhans;
            TinNhanDao.AddTinNhan(newTinNhan);

            try
            {
                // Thong bao den client app
                FCMController fcm      = new FCMController();
                string        message  = fcm.CreateMessageNotification(newTinNhan);
                string        response = fcm.SendMessage(message);
                return(Ok(response));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message + "\n" + ex.InnerException.Message));
            }
        }
        public ActionResult DemoPostMessage(FormCollection form)
        {
            var demo = new DemoKetQua();

            var tieuDe              = HttpUtility.HtmlEncode(form["txtTieuDe"]);
            var noiDung             = HttpUtility.HtmlEncode(form["txtNoiDung"]);
            var maNguoiGui          = form["txtMaNguoiNguoi"];
            var thoiDiemGui         = DateTime.Now;
            var danhSachMaNguoiNhan = form["txtNguoiNhan[]"].Split(',').ToList <string>();

            try
            {
                // Them tin nhan vao db
                TINNHAN tinNhan = new TINNHAN()
                {
                    MaTinNhan   = TinNhanDao.GetMaxMaTinNhan() + 1, // tu dong tang
                    TieuDe      = tieuDe,
                    NoiDung     = noiDung,
                    ThoiDiemGui = thoiDiemGui,
                };

                // Lay danh sach thong tin nguoi nhan
                var danhSachNguoiNhan = new List <NGUOINHAN>();
                danhSachMaNguoiNhan.ForEach(m => danhSachNguoiNhan.Add(
                                                new NGUOINHAN()
                {
                    MaTinNhan      = tinNhan.MaTinNhan,
                    MaNguoiNhan    = int.Parse(m),
                    TrangThai      = TinNhanDao.TINNHAN_CHUA_XOA,
                    HoTenNguoiNhan = SinhVienDao.GetHoTenTheoTaiKhoan(int.Parse(m)),
                    ThoiDiemXem    = null,
                    TINNHAN        = tinNhan,
                    TAIKHOAN       = null
                }
                                                ));

                //// Nguoi gui
                var nguoiGui = new List <NGUOIGUI>
                {
                    new NGUOIGUI()
                    {
                        MaNguoiGui    = int.Parse(maNguoiGui),
                        TrangThai     = TinNhanDao.TINNHAN_CHUA_XOA,
                        MaTinNhan     = tinNhan.MaTinNhan,
                        HoTenNguoiGui = SinhVienDao.GetHoTenTheoTaiKhoan(int.Parse(maNguoiGui)),
                        TINNHAN       = tinNhan,
                        TAIKHOAN      = null
                    }
                };

                tinNhan.NGUOINHANs = danhSachNguoiNhan;
                tinNhan.NGUOIGUIs  = nguoiGui;
                TinNhanDao.AddTinNhan(tinNhan);

                // Thong bao den client app
                FCMController fcm     = new FCMController();
                string        message = fcm.CreateMessageNotification(tinNhan);
                demo.TinGuiDi = message;

                string response = fcm.SendMessage(message);
                demo.PhanHoi = response;

                // Hien thi ket qua thanh cong
                demo.KetQua = "Them thanh cong !!!";
            }
            catch (Exception ex)
            {
                demo.PhanHoi = ex.Message + ex.StackTrace;
            }

            return(RedirectToAction("DemoPostMessage", "Demo", demo));
        }