public IHttpActionResult Postbt_notificaciones(Models.notificacionesZonaModel n) { // Creo en el maestro la notificacion Data.lk_notificacion noti = new Data.lk_notificacion(); noti.notificacion_desc = n.notificacion_desc; noti.notificacion_texto = n.notificacion_texto; noti.notificacion_tipo = n.notificacion_tipo; db.lk_notificacion.Add(noti); db.SaveChanges(); // Busco todos los usuarios de la localidad List <Data.cliente> clientes = _clienteService.findClientsByLocalidad(n.localidad_sk); List <Data.usuario> usuarios = _clienteService.findUsersByClients(clientes); // Armo una notificacion por cada Usuario foreach (usuario u in usuarios) { Data.bt_notificaciones bt_not_aux = new Data.bt_notificaciones(); bt_not_aux.usuario_sk = u.usuario_sk; bt_not_aux.cliente_sk = u.cliente_sk; bt_not_aux.notificacion_sk = noti.notificacion_sk; bt_not_aux.tiempo_sk = DateTime.Today; db.bt_notificaciones.Add(bt_not_aux); db.SaveChanges(); // Mando Notificacion Push Service.FirebaseService.notificacion_mensaje m = new Service.FirebaseService.notificacion_mensaje(); m.usuario_sk = u.usuario_sk; m.cliente_sk = 0; m.titulo = noti.notificacion_desc; m.descripcion = noti.notificacion_texto; fb.EnviarAFCM(m); } return(CreatedAtRoute("DefaultApi", new { id = n.notificacion_tipo }, n)); }
public IHttpActionResult Postbt_ot_status(Models.ot_statusModel estado) { string notificacion_desc = ""; string notificacion_texto = ""; bt_ot_status bt_ot_status = Models.ot_statusModel.ConvertToBD(estado); db.bt_ot_status.Add(bt_ot_status); db.SaveChanges(); estado.tiempo_sk = bt_ot_status.tiempo_sk.ToString("yyyy-MM-dd"); estado.hh_mm_ss = bt_ot_status.hh_mm_ss; estado.timestamp = string.Concat(bt_ot_status.tiempo_sk.ToString("yyyy-MM-dd"), " ", bt_ot_status.hh_mm_ss); if (estado.estado_sk == 3 || estado.estado_sk == 2) { // actualizo el estado de cierre de la OT Data.bt_ord_trabajo ot = db.bt_ord_trabajo.Where(x => x.ot_id == estado.ot_id).FirstOrDefault(); if (estado.estado_sk == 3) { //FINALIZADA ot.fh_cierre = DateTime.Today; db.SaveChanges(); notificacion_desc = string.Concat("Orden ", estado.ot_id.ToString(), " resuelta"); notificacion_texto = string.Concat("La orden ", estado.ot_id.ToString(), " ha sido resuelta, ante cualquier consulta no dude en informarnos"); } else { // EN CURSO tecnico t = null; int tecnico_sk; if (ot.tecnico_sk != null) { tecnico_sk = (int)ot.tecnico_sk; t = (from tec in db.tecnicos where tec.tecnico_sk == tecnico_sk select tec).FirstOrDefault(); } notificacion_desc = string.Concat("Orden ", estado.ot_id.ToString(), " en curso"); if (t != null) { notificacion_texto = "Técnico asignado: " + t.tecnico_desc;// string.Concat("El reclamo ", estado.ot_id.ToString(), " esta en curso"); } } // Doy de alta la notificacion en la LK Data.lk_notificacion noti = new Data.lk_notificacion(); noti.notificacion_desc = notificacion_desc; noti.notificacion_texto = notificacion_texto; noti.notificacion_tipo = "OT y OS"; db.lk_notificacion.Add(noti); db.SaveChanges(); // Busco los usuarios del cliente de la OT List <usuario> usuarios = _clienteService.findUsersByClient(ot.cliente_sk); // Armo una notificacion por cada Usuario foreach (usuario u in usuarios) { Data.bt_notificaciones bt_not = new Data.bt_notificaciones(); bt_not.usuario_sk = u.usuario_sk; bt_not.cliente_sk = u.cliente_sk; bt_not.notificacion_sk = noti.notificacion_sk; bt_not.tiempo_sk = DateTime.Today; bt_not.ot_id = estado.ot_id; db.bt_notificaciones.Add(bt_not); } db.SaveChanges(); // Mando Notificacion Push Service.FirebaseService.notificacion_mensaje m = new Service.FirebaseService.notificacion_mensaje(); m.cliente_sk = ot.cliente_sk; m.usuario_sk = 0; m.titulo = noti.notificacion_desc; fb.EnviarAFCM(m); } return(CreatedAtRoute("DefaultApi", new { id = estado.ot_id }, estado)); }
public IHttpActionResult Postbt_ord_trabajo(Models.otModel orden) { bt_ord_trabajo bt_ord_trabajo = Models.otModel.ConvertToBD(orden); if (bt_ord_trabajo.ot_id == 0) { // Creo la la orden db.bt_ord_trabajo.Add(bt_ord_trabajo); db.SaveChanges(); orden.fh_cierre = ((DateTime)(bt_ord_trabajo.fh_cierre)).ToString("yyyy-mm-dd");; orden.fh_creacion = ((DateTime)(bt_ord_trabajo.fh_creacion)).ToString("yyyy-mm-dd");; orden.ot_id = bt_ord_trabajo.ot_id; orden.estado_id = 1; orden.estado_desc = _otService.buscarEstado(1).estado_desc; // Creo el estado 1 para la orden Models.ot_statusModel st = new Models.ot_statusModel(); st.estado_sk = 1; st.ot_id = bt_ord_trabajo.ot_id; st.comentarios = "Nueva Orden"; bt_ot_status bt_ot_status = Models.ot_statusModel.ConvertToBD(st); db.bt_ot_status.Add(bt_ot_status); db.SaveChanges(); // Chequeo si es un reclamo y la cantidad por zona, y dependiendo eso genero las notificaciones if (orden.tipo_id != 1) { Data.cliente cli = _clienteService.findClientBySK(orden.cliente_sk); Data.vw_ot_porc_quejas porc_quejas = db.vw_ot_porc_quejas.Where(x => x.localidad_sk == cli.localidad_sk).FirstOrDefault(); if (porc_quejas != null) { if (porc_quejas.porc >= 20) { List <Data.cliente> clientes = _clienteService.findClientsByLocalidad(cli.localidad_sk); List <Data.usuario> usuarios = _clienteService.findUsersByClients(clientes); Data.lk_localidad loc = db.lk_localidad.Where(x => x.localidad_sk == cli.localidad_sk).FirstOrDefault(); // Busco si esta la Noti y sino la doy de alta la notificacion en la LK Data.lk_notificacion noti = db.lk_notificacion.Where(x => x.notificacion_desc == String.Concat("Servicio con Inconvenientes - ", loc.localidad_desc)).FirstOrDefault(); if (noti == null) { Data.lk_notificacion noti_aux = new Data.lk_notificacion(); noti_aux.notificacion_desc = String.Concat("Servicio con Inconvenientes - ", loc.localidad_desc); noti_aux.notificacion_texto = "El servicio presenta momentaneamente inconvenientes, estamos solucionandolo para su tranquilidad. Sepa disculpar las molestias"; noti_aux.notificacion_tipo = "Alerta"; db.lk_notificacion.Add(noti_aux); db.SaveChanges(); noti = noti_aux; } // Armo una notificacion por cada Usuario foreach (usuario u in usuarios) { Data.bt_notificaciones bt_not = db.bt_notificaciones.Where(x => x.usuario_sk == u.usuario_sk && x.notificacion_sk == noti.notificacion_sk && x.tiempo_sk == DateTime.Today).FirstOrDefault(); if (bt_not == null) { Data.bt_notificaciones bt_not_aux = new Data.bt_notificaciones(); bt_not_aux.usuario_sk = u.usuario_sk; bt_not_aux.cliente_sk = u.cliente_sk; bt_not_aux.notificacion_sk = noti.notificacion_sk; bt_not_aux.tiempo_sk = DateTime.Today; db.bt_notificaciones.Add(bt_not_aux); db.SaveChanges(); bt_not = bt_not_aux; // Mando Notificacion Push Service.FirebaseService.notificacion_mensaje m = new Service.FirebaseService.notificacion_mensaje(); m.usuario_sk = u.usuario_sk; m.cliente_sk = 0; m.titulo = noti.notificacion_desc; m.descripcion = "Estamos trabajando para solucionarlo, disculpe las molestias"; fb.EnviarAFCM(m); } } } } } return(CreatedAtRoute("DefaultApi", new { id = bt_ord_trabajo.ot_id }, orden)); } else { bt_ord_trabajo ord_trabajo = db.bt_ord_trabajo.Where(x => x.ot_id == bt_ord_trabajo.ot_id).FirstOrDefault(); ord_trabajo.fh_creacion = bt_ord_trabajo.fh_creacion; ord_trabajo.fh_cierre = bt_ord_trabajo.fh_cierre; ord_trabajo.calificacion = bt_ord_trabajo.calificacion; ord_trabajo.tecnico_sk = bt_ord_trabajo.tecnico_sk; ord_trabajo.tipo = bt_ord_trabajo.tipo; ord_trabajo.descripcion = bt_ord_trabajo.descripcion; db.SaveChanges(); orden.fh_creacion = ((DateTime)(ord_trabajo.fh_creacion)).ToString("yyyy-mm-dd");; orden.fh_cierre = ((DateTime)(ord_trabajo.fh_cierre)).ToString("yyyy-mm-dd");; orden.estado_id = _otService.buscarUltEstado(orden.ot_id).estado_sk; orden.estado_desc = _otService.buscarEstado(orden.estado_id).estado_desc; return(CreatedAtRoute("DefaultApi", new { id = ord_trabajo.ot_id }, orden)); } }
public IHttpActionResult Postbt_os_status(Models.os_statusModel estado) { string notificacion_desc, notificacion_texto; bt_os_status bt_os_status = Models.os_statusModel.ConvertToBD(estado); db.bt_os_status.Add(bt_os_status); db.SaveChanges(); estado.tiempo_sk = bt_os_status.tiempo_sk.ToString("yyyy-MM-dd"); estado.hh_mm_ss = bt_os_status.hh_mm_ss; estado.timestamp = string.Concat(bt_os_status.tiempo_sk.ToString("yyyy-MM-dd"), " ", bt_os_status.hh_mm_ss); // Agrego notificacion en caso de que la orden se cierre if (estado.estado_sk == 3 || estado.estado_sk == 2) { // actualizo el estado de cierre de la OT Data.bt_solicitudes os = db.bt_solicitudes.Where(x => x.os_id == estado.os_id).FirstOrDefault(); if (estado.estado_sk == 3) { os.fh_cierre = DateTime.Today; db.SaveChanges(); notificacion_desc = string.Concat("Solicitud ", estado.os_id.ToString(), " finalizada"); notificacion_texto = string.Concat("La solicitud ", estado.os_id.ToString(), " ha sido resuelta, ante cualquier consulta no dude en informarnos"); } else { // EN CURSO notificacion_desc = string.Concat("Solicitud ", estado.os_id.ToString(), " en curso"); notificacion_texto = "";// string.Concat("El reclamo ", estado.ot_id.ToString(), " esta en curso"); } // Doy de alta la notificacion en la LK Data.lk_notificacion noti = new Data.lk_notificacion(); noti.notificacion_desc = notificacion_desc; noti.notificacion_texto = notificacion_texto; noti.notificacion_tipo = "OT y OS"; db.lk_notificacion.Add(noti); db.SaveChanges(); // Busco los usuarios del cliente de la OT List <usuario> usuarios = _clienteService.findUsersByClient(os.cliente_sk); // Armo una notificacion por cada Usuario foreach (usuario u in usuarios) { Data.bt_notificaciones bt_not = new Data.bt_notificaciones(); bt_not.usuario_sk = u.usuario_sk; bt_not.cliente_sk = u.cliente_sk; bt_not.notificacion_sk = noti.notificacion_sk; bt_not.tiempo_sk = DateTime.Today; //bt_not.ot_id = estado.os_id; bt_not.ot_id = 0;//PORQUE ES UNA SOLICITUD db.bt_notificaciones.Add(bt_not); } db.SaveChanges(); // Mando Notificacion Push Service.FirebaseService.notificacion_mensaje m = new Service.FirebaseService.notificacion_mensaje(); m.cliente_sk = os.cliente_sk; m.usuario_sk = 0; m.titulo = noti.notificacion_desc; fb.EnviarAFCM(m); } return(CreatedAtRoute("DefaultApi", new { id = estado.os_id }, estado)); }