PageRenderTime 35ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/PHP/Control Escolar/CalendarioBundle/Business/Entity/Parametro.php

https://gitlab.com/bluedrayco/Portafolio
PHP | 439 lines | 285 code | 94 blank | 60 comment | 26 complexity | 831aa62d32d7db0cf710d85855fcdb1c MD5 | raw file
  1. <?php
  2. namespace ControlEscolar\CalendarioBundle\Business\Entity;
  3. use Doctrine\ORM\EntityManager;
  4. use Core\SyncBundle\Business\Action\Sync as BSync;
  5. use Core\UserBundle\Entity\Usuario;
  6. use Core\CoreBundle\Business\Entity\BusinessEntity;
  7. use Doctrine\DBAL\DBALException;
  8. use Core\CoreBundle\Lib\EnovaDates;
  9. use ControlEscolar\CalendarioBundle\Entity\Parametro as EParametro;
  10. use Core\CoreBundle\Business\Entity\GenericRest as BGeneric;
  11. /**
  12. * * Lógica de negocio de la manipulación de un Parametro
  13. * @author Roberto Leroy <roberto.monroy@enova.mx>
  14. */
  15. class Parametro extends BusinessEntity {
  16. public function __construct(EntityManager $em, $kernel = null) {
  17. $this->construct($em);
  18. $this->container = $kernel;
  19. }
  20. /**
  21. * Listado de los Parametros
  22. * @param mixed func_get_args()[0] arreglo de opciones procedentes del query param
  23. * @return mixed objeto respuesta con los datos de los Parametros
  24. */
  25. public function listar() {
  26. try{
  27. $parametros = array();
  28. $parametros = $this->getRepository(
  29. 'ControlEscolarCalendarioBundle:Parametro',
  30. (count(func_get_args()[0]) > 0) ? func_get_args()[0] : array(),
  31. null,
  32. 200,
  33. null,
  34. (count(func_get_args()[0]) > 0) ? 'findByOpciones' : 'findBy'
  35. );
  36. if (!$parametros) {
  37. $this->respuesta['data']['parametros'] = array();
  38. return $this->respuesta;
  39. }
  40. }catch(\Exception $e){
  41. $this->buildRespuesta(
  42. $e->getMessage(), null, 404, null, 'error'
  43. );
  44. return $this->respuesta;
  45. }catch(\DBALException $ex){
  46. $this->buildRespuesta(
  47. $ex->getMessage(), null, 404, null, 'error'
  48. );
  49. return $this->respuesta;
  50. }
  51. return $this->buildRespuesta(null, array('parametros' => $parametros));
  52. }
  53. public function obtenerParametroByTag($nombre_parametro){
  54. $parametro= $this->listar(
  55. array(
  56. 'filter'=>"parametro.nombre='".$nombre_parametro."'"
  57. )
  58. );
  59. if($parametro['data']['parametros']== null){
  60. $this->log->error("No se encontro el parametro con nombre {$nombre_parametro}");
  61. }
  62. return $parametro['data']['parametros'];
  63. }
  64. public function obtenerParametro($id) {
  65. $parametro = $this->getRepository(
  66. 'ControlEscolarCalendarioBundle:Parametro',
  67. array('parametro_id' => $id),
  68. null,
  69. 200
  70. );
  71. if (!$parametro) {
  72. $this->respuesta["data"]["parametro"] = array();
  73. $this->buildRespuesta('get', array('parametro' => null),false,404);
  74. return $this->respuesta;
  75. }
  76. $this->buildRespuesta('get', array('parametro' => $parametro),true,200);
  77. return $this->respuesta;
  78. }
  79. /**
  80. * Actualización de datos de un parametro
  81. * @param int $obj['nombre'] nombre del parametro
  82. * @param int $obj['etiqueta'] etiqueta del parametro
  83. * @param int $obj['tipo'] identificador del tipo del parametro
  84. * @param int $obj['valor'] valor del parametro
  85. * @param int $obj['puede_publicar'] nuevo estatus puede publicar del parametro
  86. * @param int $obj['modifica_centro'] nuevo estatus si se puede modificar el parametro en el centro
  87. * @param int $obj['activo'] nuevo estatus de activo del parametro
  88. * @return mixed objeto respuesta
  89. */
  90. public function actualizar($obj) {
  91. $parametro = $this->getRepository(
  92. "ControlEscolarCalendarioBundle:Parametro", array('parametro_id' => $obj['parametro_id'])
  93. );
  94. if (!$parametro) {
  95. return $this->respuesta;
  96. }
  97. /*
  98. if (array_key_exists('oferta_educativa_estatus_id', $obj)) {
  99. $ofertaEducativaEstatus = $this->getRepository(
  100. "ControlEscolarCalendarioBundle:OfertaEducativaEstatus", array('oferta_educativa_estatus_id' => $obj['oferta_educativa_estatus_id']), null, null, null, 'find', null
  101. );
  102. if (!$ofertaEducativaEstatus) {
  103. $this->buildRespuesta('put');
  104. return $this->respuesta;
  105. }
  106. $ofertaEducativa->setOfertaEducativaEstatus($ofertaEducativaEstatus);
  107. }
  108. */
  109. if (array_key_exists('nombre',$obj)) {
  110. $parametro->setNombre($obj['nombre']);
  111. }
  112. if (array_key_exists('etiqueta',$obj)) {
  113. $parametro->setEtiqueta($obj['etiqueta']);
  114. }
  115. if (array_key_exists('tipo',$obj)) {
  116. $parametro->setTipo($obj['tipo']);
  117. }
  118. if (array_key_exists('valor',$obj)) {
  119. $parametro->setValor($obj['valor']);
  120. }
  121. if (array_key_exists('activo',$obj)) {
  122. $parametro->setActivo($obj['activo']);
  123. }
  124. if (array_key_exists('puede_publicar',$obj)) {
  125. $parametro->setPuedePublicar($obj['puede_publicar']);
  126. }
  127. if (array_key_exists('modifica_centro',$obj)) {
  128. $parametro->setModificaCentro($obj['modifica_centro']);
  129. }
  130. if (array_key_exists('usuario_id', $obj)) {
  131. $usuario = $this->getRepository(
  132. "CoreUserBundle:Usuario", array('id' => $obj['usuario_id']), null, null, null, 'find', null
  133. );
  134. if (!$usuario) {
  135. $this->buildRespuesta('put');
  136. return $this->respuesta;
  137. }
  138. $parametro->setUsuarioModifica($usuario);
  139. }
  140. $fecha=new \DateTime();
  141. $parametro->setFechaModificacion($fecha);
  142. try{
  143. $this->entityManager->flush();
  144. } catch (DBALException $e) {
  145. $this->buildRespuesta(
  146. $e->getMessage(), null, 404, null, 'error'
  147. );
  148. return $this->respuesta;
  149. }
  150. $this->buildRespuesta('put');
  151. return $this->respuesta;
  152. }
  153. /**
  154. * Creación de datos de un parametro
  155. * @param int $obj['nombre'] nombre del parametro
  156. * @param int $obj['etiqueta'] etiqueta del parametro
  157. * @param int $obj['tipo'] identificador del tipo del parametro
  158. * @param int $obj['valor'] valor del parametro
  159. * @param int $obj['puede_publicar'] nuevo estatus puede publicar del parametro
  160. * @param int $obj['modifica_centro'] nuevo estatus si se puede modificar el parametro en el centro
  161. * @param int $obj['activo'] nuevo estatus de activo del parametro
  162. * @return mixed objeto respuesta
  163. */
  164. public function crear($obj){
  165. $usuario = $this->getRepository(
  166. "CoreUserBundle:Usuario", array('id' => $obj['usuario_id']), null, null, null, 'find',null
  167. );
  168. if (!$usuario) {
  169. $this->respuesta["data"]["parametros"] = null;
  170. return $this->respuesta;
  171. }
  172. $fecha=new \DateTime();
  173. $parametro=new EParametro();
  174. $parametro->setFechaAlta($fecha);
  175. $parametro->setFechaModificacion($fecha);
  176. if (array_key_exists('nombre',$obj)) {
  177. $parametro->setNombre($obj['nombre']);
  178. }else{
  179. $this->buildRespuesta(
  180. 'No se almacenó en la base de datos el parametro porque no se especifico un nombre',
  181. array('parametro' => null),
  182. 404,
  183. null,
  184. 'error'
  185. );
  186. }
  187. if (array_key_exists('etiqueta',$obj)) {
  188. $parametro->setEtiqueta($obj['etiqueta']);
  189. }else{
  190. $this->buildRespuesta(
  191. 'No se almacenó en la base de datos el parametro porque no se especifico una etiqueta',
  192. array('parametro' => null),
  193. 404,
  194. null,
  195. 'error'
  196. );
  197. }
  198. $parametro->setTipo(1);
  199. if (array_key_exists('valor',$obj)) {
  200. $parametro->setValor($obj['valor']);
  201. }else{
  202. $this->buildRespuesta(
  203. 'No se almacenó en la base de datos el parametro porque no se especifico un valor',
  204. array('parametro' => null),
  205. 404,
  206. null,
  207. 'error'
  208. );
  209. }
  210. if (array_key_exists('activo',$obj)) {
  211. $parametro->setActivo($obj['activo']);
  212. }else{
  213. $this->buildRespuesta(
  214. 'No se almacenó en la base de datos el parametro porque no se especifico si esta activo',
  215. array('parametro' => null),
  216. 404,
  217. null,
  218. 'error'
  219. );
  220. }
  221. if (array_key_exists('puede_publicar',$obj)) {
  222. $parametro->setPuedePublicar($obj['puede_publicar']);
  223. }else{
  224. $this->buildRespuesta(
  225. 'No se almacenó en la base de datos el parametro porque no se especifico si puede publicar',
  226. array('parametro' => null),
  227. 404,
  228. null,
  229. 'error'
  230. );
  231. }
  232. if (array_key_exists('modifica_centro',$obj)) {
  233. $parametro->setModificaCentro($obj['modifica_centro']);
  234. }else{
  235. $this->buildRespuesta(
  236. 'No se almacenó en la base de datos el parametro porque no se especifico si se puede modificar en centro',
  237. array('parametro' => null),
  238. 404,
  239. null,
  240. 'error'
  241. );
  242. }
  243. if (array_key_exists('usuario_id', $obj)) {
  244. $usuario = $this->getRepository(
  245. "CoreUserBundle:Usuario", array('id' => $obj['usuario_id']), null, null, null, 'find', null
  246. );
  247. if (!$usuario) {
  248. $this->buildRespuesta('put');
  249. return $this->respuesta;
  250. }
  251. $parametro->setUsuarioModifica($usuario);
  252. }
  253. try {
  254. $this->entityManager->persist($parametro);
  255. $this->entityManager->flush();
  256. $this->buildRespuesta('post', array('parametro' => $parametro));
  257. } catch (DBALException $e) {
  258. $this->buildRespuesta(
  259. 'No se almacenó en la base de datos el parametro',
  260. array('parametro' => $parametro),
  261. 404,
  262. null,
  263. 'error'
  264. );
  265. return $this->respuesta;
  266. }
  267. return $this->respuesta;
  268. }
  269. /**
  270. * Eliminación de un Parametro
  271. * @param int $parametro_id identificador del Parametro a eliminar
  272. * @return mixed objeto respuesta con un mensaje de exito o error
  273. */
  274. public function eliminar($parametro_id) {
  275. $parametro = $this->getRepository(
  276. "ControlEscolarCalendarioBundle:Parametro", array(
  277. 'parametro_id' => $parametro_id,
  278. ),
  279. null,
  280. 200,
  281. null,
  282. 'find',
  283. null);
  284. if (!$parametro) {
  285. return $this->respuesta;
  286. }
  287. try {
  288. $parametro->setActivo(false);
  289. $this->entityManager->flush();
  290. $this->buildRespuesta('delete');
  291. } catch (DBALException $e) {
  292. $this->buildRespuesta(
  293. $e->getMessage(), null, 404, null, 'error'
  294. );
  295. return $this->respuesta;
  296. }
  297. return $this->respuesta;
  298. }
  299. /**
  300. * Sincronización de parametros y parametrosActividad a centros(todos o por destino_id)
  301. * @param mixed $params Contiene de cajón usuario_id, y puede recibir parametros por url que representa destino_id (14,15,16)
  302. * @return mixed Objeto respuesta de el estado de sincronización: status,code,message,data
  303. */
  304. public function sincronizar($params){
  305. try{
  306. if(!array_key_exists('usuario_id', $params)){
  307. return $this->buildRespuesta('No se encontro una sesión activa',false,false,404);
  308. }
  309. $parametros = $this->listar(null);
  310. //return $parametros;
  311. if(count($parametros['data']['parametros']) < 1){
  312. return $this->buildRespuesta('No se encontron Parametros para sincronizar',false,false,404);
  313. }
  314. //Obtenemos las entidades ParametroActividad
  315. $genericBuussiness = new BGeneric($this->entityManager);
  316. $parametrosActividad = $genericBuussiness->listarGenerico(
  317. "ControlEscolarCalendarioBundle:ParametroActividad",
  318. array(),
  319. null
  320. );
  321. if(!$parametrosActividad['status']){
  322. return $this->buildRespuesta('No se encontron ParametrosActividad para sincronizar',false,false,404);
  323. }
  324. $paquete = array_merge($parametros['data']['parametros'],$parametrosActividad['data']['controlescolarcalendariobundle:parametroactividad']);
  325. //verificamos si se desea un destino específico, sino sincronizara a todos.
  326. $destinos = array_key_exists('destinos', $params)? $params['destinos'] : null;
  327. //Obtenemos del contenedor de servicios al servicio sincronizacion
  328. $sincronizacionService = $this->container->get('sincronizacion');
  329. //Envia el paquete a los destinos validos y retorna un array de success y error de acuerdo al estatus de sincronización.
  330. $destinosEnviados = $sincronizacionService->enviarPaquete($paquete,$params['usuario_id'],$destinos);
  331. $respuesta['data'] = array('error' => $destinosEnviados['error'],'succes' => $destinosEnviados['success']);
  332. return $this->buildRespuesta('Sincronización Completada',$respuesta);
  333. }catch(\Exception $e){
  334. return $this->buildRespuesta(
  335. $e->getMessage(), null, 404, null, 'error'
  336. );
  337. }catch(\DBALException $ex){
  338. return $this->buildRespuesta(
  339. $ex->getMessage(), null, 404, null, 'error'
  340. );
  341. }
  342. }
  343. }