// GET api/usuario public IEnumerable<Models.Usuario> Get(int? id = null, string nome = null, int? grupo = null) { using (var c = new Models.DbMeNotaDataContext()) { var r = from u in c.Usuarios select u; if (id.HasValue) { r = r.Where(u => u.Id == id); } else if (!string.IsNullOrEmpty(nome)) { var strNome = nome.Trim().ToLower(); r = r.Where(u => u.Nome.ToLower().Contains(strNome)); } else if (grupo.HasValue) { r = r.Where(u => u.GrupoUsuarios.SingleOrDefault(g => g.IdGrupo == grupo) != null); } return r.ToList(); } }
// POST api/usuario public void Post([FromBody] string value) { List<Models.Usuario> lst = JsonConvert.DeserializeObject<List<Models.Usuario>>(value); using (var c = new Models.DbMeNotaDataContext()) { c.Usuarios.InsertAllOnSubmit(lst); c.SubmitChanges(); } }
// DELETE api/grupo/5 public void Delete(int id) { using (var c = new Models.DbMeNotaDataContext()) { Models.Grupo grp = c.Grupos.SingleOrDefault(g => g.Id == id); c.GrupoUsuarios.DeleteAllOnSubmit(grp.GrupoUsuarios); c.Grupos.DeleteOnSubmit(grp); c.SubmitChanges(); } }
// PUT api/grupo/5 public void Put(int id, [FromBody] string value) { Models.Grupo x = JsonConvert.DeserializeObject<Models.Grupo>(value); using (var c = new Models.DbMeNotaDataContext()) { Models.Grupo grp = c.Grupos.SingleOrDefault(g => g.Id == id); grp.Descricao = x.Descricao; c.SubmitChanges(); } }
// DELETE api/usuario/5 public void Delete(int id) { using (var c = new Models.DbMeNotaDataContext()) { Models.Usuario usr = c.Usuarios.SingleOrDefault(u => u.Id == id); c.GrupoUsuarios.DeleteAllOnSubmit(usr.GrupoUsuarios); c.Grupos.DeleteAllOnSubmit(usr.Grupos); c.Usuarios.DeleteOnSubmit(usr); c.SubmitChanges(); } }
// DELETE api/grupousuario?grupo=5&usuario=2 public void Delete(int grupo, int usuario) { using (var c = new Models.DbMeNotaDataContext()) { Models.GrupoUsuario grp = c.GrupoUsuarios.SingleOrDefault(g => g.IdGrupo == grupo && g.IdUsuario == usuario); if (grp != null) { c.GrupoUsuarios.DeleteOnSubmit(grp); c.SubmitChanges(); } } }
// PUT api/usuario/5 public void Put(int id, [FromBody] string value) { Models.Usuario x = JsonConvert.DeserializeObject<Models.Usuario>(value); using (var c = new Models.DbMeNotaDataContext()) { Models.Usuario usr = c.Usuarios.SingleOrDefault(u => u.Id == id); if (usr != null) { usr.Nome = x.Nome; usr.Url = x.Url; c.SubmitChanges(); } } }
// POST api/grupo public void Post([FromBody] string value) { List<Models.Grupo> lst = JsonConvert.DeserializeObject<List<Models.Grupo>>(value); using (var c = new Models.DbMeNotaDataContext()) { c.Grupos.InsertAllOnSubmit(lst); c.SubmitChanges(); for (int i = 0, length = lst.Count; i < length; i++) { c.GrupoUsuarios.InsertOnSubmit(new Models.GrupoUsuario { IdGrupo = lst[i].Id, IdUsuario = lst[i].IdAdm }); } c.SubmitChanges(); } }
// GET api/grupousuario public IEnumerable<Models.GrupoUsuario> Get(int? grupo = null, int? usuario = null) { using (var c = new Models.DbMeNotaDataContext()) { var r = from u in c.GrupoUsuarios select u; if (grupo.HasValue) { r = r.Where(g => g.IdGrupo == grupo); } if (usuario.HasValue) { r = r.Where(g => g.IdUsuario == usuario); } return r.ToList(); } }
// GET api/grupo public IEnumerable<Models.Grupo> Get(int? id = null, int? admin = null, int? usuario = null) { using (var c = new Models.DbMeNotaDataContext()) { var r = from g in c.Grupos select g; if (id.HasValue) { r = r.Where(g => g.Id == id); } else if (admin.HasValue) { r = r.Where(g => g.IdAdm == admin); } else if (usuario.HasValue) { r = r.Where(g => g.GrupoUsuarios.SingleOrDefault(gu => gu.IdUsuario == usuario) != null); } return r.ToList(); } }
// GET: Notificacao/Enviar?remetente=5&destinatario=1&mensagem=HelloWorld public ActionResult Enviar(int remetente, int destinatario, string mensagem, int? grupo) { object retorno; Models.Usuario usuario; Models.Usuario usuarioAlvo; using (var c = new Models.DbMeNotaDataContext()) { usuario = c.Usuarios.SingleOrDefault(u => u.Id == remetente); usuarioAlvo = c.Usuarios.SingleOrDefault(u => u.Id == destinatario); } if (String.IsNullOrWhiteSpace(mensagem)) { retorno = new { Mensagem = "Mensagem vazio.", Flag = false }; } else { try { string param = grupo.HasValue ? "<wp:Param>/GrupoPage.xaml?grupo=" + grupo.Value + "&remetente=" + usuario.Nome + "&mensagem=" + mensagem + "</wp:Param>" : "<wp:Param>/UsuarioPage.xaml?usuario=" + usuario.Id + "&mensagem="+ mensagem + "</wp:Param>"; string xmlMensagem = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<wp:Notification xmlns:wp=\"WPNotification\">" + "<wp:Toast>" + "<wp:Text1>" + $"@{usuario.Nome}" + "</wp:Text1>" + "<wp:Text2>" + mensagem + "</wp:Text2>" + param + "</wp:Toast>" + "</wp:Notification>"; byte[] msgBytes = Encoding.UTF8.GetBytes(xmlMensagem); string uri = usuarioAlvo.Url; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "POST"; request.ContentType = "text/xml"; request.ContentLength = xmlMensagem.Length; request.Headers["X-MessageID"] = Guid.NewGuid().ToString(); request.Headers["X-WindowsPhone-Target"] = "toast"; request.Headers["X-NotificationClass"] = "2"; // Envia a requisição using (Stream requestStream = request.GetRequestStream()) { requestStream.Write(msgBytes, 0, msgBytes.Length); } HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string notificationStatus = response.Headers["X-NotificationStatus"]; string notificationChannelStatus = response.Headers["X-SubscriptionStatus"]; string deviceConnectionStatus = response.Headers["X-DeviceConnectionStatus"]; if (notificationStatus == "Received" && notificationChannelStatus == "Active" && deviceConnectionStatus == "Connected") { retorno = new { Mensagem = "Mensagem enviada.", Flag = true }; } else { retorno = new { Mensagem = $"@{usuarioAlvo.Nome} está desconectado.", Flag = false }; } } catch { TempData["Resultado"] = "Ocorreu um erro."; retorno = new { Mensagem = "Ocorreu um erro.", Flag = false }; } } return Json(retorno, JsonRequestBehavior.AllowGet); }