Advertisement
Cristian-Paolini

Untitled

Sep 20th, 2022
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. sap.ui.define([
  2.     "sap/ui/core/mvc/Controller",
  3.     "sap/m/MessageToast",
  4.     "sap/ui/model/json/JSONModel",
  5.     "sap/ui/core/Fragment",
  6.     "sap/m/MessageBox",
  7.     "sap/ui/core/UIComponent",
  8.     "academia2022/zjuegospa/model/formatter",
  9.     "sap/ui/model/Filter",
  10.     "sap/ui/model/FilterOperator"
  11. ],
  12.     /**
  13.      * @param {typeof sap.ui.core.mvc.Controller} Controller
  14.      */
  15.     function (Controller, MessageToast, JSONModel, Fragment, MessageBox, UIComponent, formatter, Filter, FilterOperator) {
  16.         "use strict";
  17.         var oThis;
  18.  
  19.         return Controller.extend("academia2022.zjuegospa.controller.Companias", {
  20.             formatter: formatter,
  21.  
  22.             onInit: function () {
  23.                 oThis = this;
  24.  
  25.                 //modelo usado para configuraciones de la vista
  26.                 var oViewModel = new JSONModel({
  27.                     esEditarCompania: false
  28.                 });
  29.                 this.getView().setModel(oViewModel, "vista");
  30.  
  31.                 //modelo usado para la creación y modificación de companias (JSON - cliente)
  32.                 var oCompaniaModel = new JSONModel();
  33.                 this.getView().setModel(oCompaniaModel, "compania");
  34.  
  35.                 var oCompaniasModel = new JSONModel();
  36.                 this.getView().byId("idTablaCompanias").setModel(oCompaniasModel, "companiasJson");
  37.  
  38.             },
  39.  
  40.             onAfterRendering: function () {
  41.                 this.traerCompanias();
  42.             },
  43.            
  44.             /* ----------------------------------- */
  45.                     //CRUD - DELETE ENTITY
  46.             /* ----------------------------------- */
  47.             borrarCompania: function (oEvent) {
  48.                 let oModel = this.getView().getModel();
  49.  
  50.                 let path = oEvent.getSource().getBindingContext().getPath();
  51.  
  52.                 MessageBox.warning("Se borrará la compañía seleccionada, además de sus juegos. ¿Desea continuar?", {
  53.                     actions: [MessageBox.Action.OK, MessageBox.Action.CANCEL],
  54.                     emphasizedAction: MessageBox.Action.OK,
  55.                     onClose: function (sAction) {
  56.                         if (sAction === 'OK') {
  57.                             oModel.remove(path, {
  58.                                 success: function (CompaniaBack) {
  59.                                     let sMsg = "Se eliminó la Compañía";
  60.                                     MessageToast.show(sMsg);
  61.                                 }.bind(this),
  62.                                 error: function (oError) {
  63.                                     MessageToast.show("Error al conectar con SAP");
  64.                                 }.bind(this)
  65.                             });
  66.                         }
  67.                     }.bind(this)
  68.                 });
  69.             },
  70.  
  71.             /* ----------------------------------- */
  72.                     //CRUD - UPDATE ENTITY
  73.             /* ----------------------------------- */
  74.             editarCompania: function (oEvent) {
  75.             let oModel = this.getView().getModel();
  76.                 let oCompania = this.getView().getModel("compania").getData();
  77.                 let cantidadDevs = oCompania.CantidadDesarrolladores;
  78.                 oCompania.CantidadDesarrolladores = parseInt(cantidadDevs);
  79.  
  80.                 let path = oModel.createKey("/CompaniaSet", {
  81.                     IdCompania: oCompania.IdCompania
  82.                 });
  83.                 if (!this.validarUrlLogo()) {
  84.                     this.getView().byId("urlLogo").setValueState(sap.ui.core.ValueState.Error);
  85.                 }
  86.                 if (!this.validarNombreCompania()) {
  87.                     this.getView().byId("nombreCompania").setValueState(sap.ui.core.ValueState.Error);
  88.                 }
  89.                 if (!this.validarIngresosAnuales()) {
  90.                     this.getView().byId("ingresosAnuales").setValueState(sap.ui.core.ValueState.Error);
  91.                 }
  92.                 if (!this.validarEmail()) {
  93.                     this.getView().byId("mailContacto").setValueState(sap.ui.core.ValueState.Error);
  94.                 }
  95.                 if (!this.validarSitioWeb()) {
  96.                     this.getView().byId("sitioWeb").setValueState(sap.ui.core.ValueState.Error);
  97.                 }
  98.                 if (!this.validarCantidadDesarrolladores()) {
  99.                     this.getView().byId("cantidadDesarrolladores").setValueState(sap.ui.core.ValueState.Error);
  100.                 }
  101.                 if (this.validarUrlLogo() && this.validarNombreCompania() && this.validarIngresosAnuales() && this.validarEmail() &&
  102.                          this.validarSitioWeb() && this.validarCantidadDesarrolladores()) {
  103.                              
  104.                         oModel.update(path, oCompania, {
  105.                             success: function (CompaniaBack) {
  106.                                 MessageToast.show("Se modificó la compañía " + oCompania.NombreCompania);
  107.                                 this.onCloseDialogCompania();
  108.                             }.bind(this),
  109.                        
  110.                         error: function (oError) {
  111.                             MessageToast.show("Hubo un error, por lo que no se pudo modificar la compañía");
  112.                         }
  113.                     });
  114.                 } else {
  115.                     MessageToast.show("No se pudo modificar la compañía. Por favor, verifique los datos ingresados");
  116.                 }
  117.             },
  118.  
  119.             validarUrlLogo: function () {
  120.        
  121.                 var urlLogo = this.getView().byId("urlLogo").getValue();
  122.                
  123.                 var urlLogoregex = /(http(s?):)([/|.|\w|\s|-])*\.(?:jpg|gif|png)/;
  124.                
  125.                 if (!urlLogoregex.test(urlLogo)) {
  126.                     return false;
  127.                 } else {
  128.                     return true;
  129.                 }
  130.                
  131.             },
  132.            
  133.             validarNombreCompania: function () {
  134.                 var nombreCompania = this.getView().byId("nombreCompania").getValue();
  135.                
  136.                 var nombreCompregex = /^[A-Z][a-z]+\s[A-Z][a-z]+$/;
  137.                 var nombreSinEspacioCompregex = /^([ \u00c0-\u01ffa-zA-Z'\-])+$/;
  138.                
  139.                 if (!nombreCompregex.test(nombreCompania) && !nombreSinEspacioCompregex.test(nombreCompania)) {
  140.                     return false;        
  141.                 } else {
  142.                     return true;
  143.                 }
  144.             },
  145.            
  146.             validarIngresosAnuales: function () {
  147.                 var ingresosAnuales = this.getView().byId("ingresosAnuales").getValue();
  148.                
  149.                 var ingresosAnualesregex = /^\d+(\.\d+)*$/;
  150.                
  151.                 if (!ingresosAnualesregex.test(ingresosAnuales)) {
  152.                     return false;
  153.                 } else {
  154.                     return true;
  155.                 }
  156.             },
  157.  
  158.             validarEmail: function () {
  159.        
  160.                 var email = this.getView().byId("mailContacto").getValue();
  161.                
  162.                 var mailregex = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
  163.                
  164.                 if (!mailregex.test(email)) {
  165.                     return false;
  166.                 } else {
  167.                     return true;
  168.                 }
  169.                
  170.             },
  171.  
  172.             validarSitioWeb: function () {
  173.        
  174.                 var sitioWeb = this.getView().byId("sitioWeb").getValue();
  175.                
  176.                 var sitioWebregex = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/;
  177.                
  178.                 if (!sitioWebregex.test(sitioWeb)) {
  179.                     return false;
  180.                 } else {
  181.                     return true;
  182.                 }
  183.                
  184.             },
  185.  
  186.             validarCantidadDesarrolladores: function () {
  187.                 var cantidadDesarrolladores = this.getView().byId("cantidadDesarrolladores").getValue();
  188.                
  189.                 var cantidadDesarrolladoresregex = /^[0-9]+$/;
  190.                
  191.                 if (!cantidadDesarrolladoresregex.test(cantidadDesarrolladores)) {
  192.                     return false;
  193.                 } else {
  194.                     return true;
  195.                 }
  196.             },
  197.  
  198.             /* ----------------------------------- */
  199.                     //CRUD - CREATE ENTITY
  200.             /* ----------------------------------- */
  201.             crearCompania: function () {
  202.                 let oModel = this.getView().getModel();
  203.                 let oCompania = this.getView().getModel("compania").getData();
  204.                 oCompania.CantidadDesarrolladores = parseInt(oCompania.CantidadDesarrolladores);
  205.                 if (!this.validarUrlLogo()) {
  206.                     this.getView().byId("urlLogo").setValueState(sap.ui.core.ValueState.Error);
  207.                 }
  208.                 if (!this.validarNombreCompania()) {
  209.                     this.getView().byId("nombreCompania").setValueState(sap.ui.core.ValueState.Error);
  210.                 }
  211.                 if (!this.validarIngresosAnuales()) {
  212.                     this.getView().byId("ingresosAnuales").setValueState(sap.ui.core.ValueState.Error);
  213.                 }
  214.                 if (!this.validarEmail()) {
  215.                     this.getView().byId("mailContacto").setValueState(sap.ui.core.ValueState.Error);
  216.                 }
  217.                 if (!this.validarSitioWeb()) {
  218.                     this.getView().byId("sitioWeb").setValueState(sap.ui.core.ValueState.Error);
  219.                 }
  220.                 if (!this.validarCantidadDesarrolladores()) {
  221.                     this.getView().byId("cantidadDesarrolladores").setValueState(sap.ui.core.ValueState.Error);
  222.                 } if (this.validarUrlLogo() && this.validarNombreCompania() && this.validarIngresosAnuales() && this.validarEmail() &&
  223.                          this.validarSitioWeb() && this.validarCantidadDesarrolladores()) {
  224.                     oModel.create("/CompaniaSet", oCompania, {
  225.                         success: function (oCompania) {
  226.                             MessageToast.show("Se creó la compañía " + oCompania.NombreCompania);
  227.                             this.getView().byId("urlLogo").setValueState(sap.ui.core.ValueState.None);
  228.                             this.getView().byId("nombreCompania").setValueState(sap.ui.core.ValueState.None);
  229.                             this.getView().byId("ingresosAnuales").setValueState(sap.ui.core.ValueState.None);
  230.                             this.getView().byId("mailContacto").setValueState(sap.ui.core.ValueState.None);
  231.                             this.getView().byId("sitioWeb").setValueState(sap.ui.core.ValueState.None);
  232.                             this.getView().byId("cantidadDesarrolladores").setValueState(sap.ui.core.ValueState.None);
  233.                             this.onCloseDialogCompania();
  234.                         }.bind(this),
  235.                        
  236.                         error: function (oError) {
  237.                             MessageToast.show("Hubo un error al crear la compañía");
  238.                         }
  239.                     });
  240.                 } else {
  241.                     MessageToast.show("No se pudo crear la compañía. Por favor, verifique los datos ingresados");
  242.                 }
  243.  
  244.             },
  245.  
  246.             //abrir popup en modo creación
  247.             abrirPopUpCreacion: function () {
  248.                 this.getView().getModel("vista").setProperty("/esEditarCompania", false);
  249.                 let oDataCompania = {
  250.                     UrlLogo: "",
  251.                     NombreCompania: "",
  252.                     IngresosAnuales: "",
  253.                     MailContacto: "",
  254.                     SitioWeb: "",
  255.                     CantidadDesarrolladores: ""
  256.                 }
  257.                 this.getView().getModel("compania").setData(oDataCompania);
  258.                 this._abrirPopUpCompania();
  259.             },
  260.  
  261.             //abrir popup en modo edición
  262.             abrirPopUpEdicion: function (evento) {
  263.                 this.getView().getModel("vista").setProperty("/esEditarCompania", true);
  264.                 let Compania = evento.getSource().getBindingContext().getObject();
  265.                 this.getView().getModel("compania").setData(Compania);
  266.                 this._abrirPopUpCompania();
  267.             },
  268.  
  269.             /* ----------------------------------- */
  270.                     //CRUD - GET ENTITY
  271.             /* ----------------------------------- */
  272.             traerCompania: function (oEvent) {
  273.                 let oModel = this.getView().getModel();
  274.  
  275.                 oModel.read("/CompaniaSet(IdCompania=1)", {
  276.                     success: function (oData) {
  277.                         MessageToast.show("Se creó la compañía");
  278.                     },
  279.                     error: function (oError) {
  280.                         MessageToast.show("Error al conectar con SAP");
  281.                     }
  282.                 })
  283.             },
  284.  
  285.             /* ----------------------------------- */
  286.                     //CRUD - GET ENTITY SET
  287.             /* ----------------------------------- */
  288.             traerCompanias: function () {
  289.                 let oModel = this.getView().getModel();
  290.                 oModel.read("/CompaniaSet", {
  291.                     success: function (oData) {
  292.                         this.getView().byId("idTablaCompanias").getModel("companiasJson").setData(oData.results);
  293.                     }.bind(this),
  294.                     error: function (oError) {
  295.                         this.getView().byId("idTablaCompanias").getModel("companiasJson").setData([]);
  296.                     }.bind(this)
  297.                 });
  298.             },
  299.  
  300.             _abrirPopUpCompania: function () {
  301.                 if (!this.dialogCompania) {
  302.                    
  303.                     Fragment.load({
  304.                         name: "academia2022.zjuegospa.view.fragments.PopUpCompania",
  305.                         controller: this,
  306.                         id: this.getView().getId()
  307.                     }).then(function (oPopup) {
  308.                         this._oDialogCompania = oPopup;
  309.                         this.getView().addDependent(oPopup);
  310.                         this._oDialogCompania.attachAfterClose(function (oEvent) {
  311.                             oEvent.getSource().destroy();
  312.                         });
  313.                         this._oDialogCompania.open();
  314.                     }.bind(this));
  315.                 }
  316.             },
  317.  
  318.             onCloseDialogCompania: function () {
  319.                 this._oDialogCompania.close();
  320.             },
  321.  
  322.             navegarCompaniaDetalle: function (oEvent) {
  323.                 let Compania = oEvent.getSource().getBindingContext().getObject();
  324.  
  325.                 var oRouter = UIComponent.getRouterFor(this);
  326.  
  327.                 oRouter.navTo("RouteCompaniaDetalle", {
  328.                     IdCompania: Compania.IdCompania
  329.                 });
  330.             },
  331.  
  332.             onSearch: function () {
  333.                 var nombreCompania = this.getView().byId("inputNombreCompania").getValue();
  334.  
  335.                 var aFilters = [];
  336.  
  337.                 if (nombreCompania) {
  338.                     aFilters.push(new Filter("NombreCompania", FilterOperator.Contains, nombreCompania));
  339.                 }
  340.  
  341.                 var oTabla = this.getView().byId("idTablaCompanias");
  342.                 oTabla.getBinding("items").filter(aFilters);
  343.             },
  344.  
  345.             abrirValueHelp: function(oEvent){
  346.                 if(!this._oValueHelpCompania){
  347.                     Fragment.load({
  348.                         name: "academia2022.zjuegospa.view.fragments.valueHelpCompanias",
  349.                         controller: this,
  350.                         id: this.getView().getId()
  351.                     }).then(function (oPopup) {
  352.                         this._oValueHelpCompania = oPopup;
  353.                         this.getView().addDependent(oPopup);
  354.                         this._oValueHelpCompania.open();
  355.                     }.bind(this));
  356.                 } else {
  357.                     this._oValueHelpCompania.open();
  358.                 }
  359.             },
  360.             cerrarValueHelp: function(oEvent){
  361.                 var aContexts = oEvent.getParameter("selectedContexts");
  362.                 if (aContexts && aContexts.length) {
  363.                     // MessageToast.show("You have chosen " + aContexts.map(function (oContext) { return oContext.getObject().Name; }).join(", "));
  364.                     this.getView().byId("inputNombreCompania").setValue(aContexts[0].getProperty("NombreCompania"))
  365.                 }
  366.             },
  367.  
  368.             buscarCompania: function (oEvent) {
  369.                 var sValue = oEvent.getParameter("value");
  370.                 var oFilter = new Filter("NombreCompania", FilterOperator.Contains, sValue);
  371.  
  372.                 if (sValue) {
  373.                     var oBinding = oEvent.getParameter("itemsBinding");
  374.                     oBinding.filter([oFilter]);  
  375.                 } else {
  376.                     var oBinding = oEvent.getParameter("itemsBinding");
  377.                     oBinding.filter([]);  
  378.                 }
  379.             }
  380.  
  381.         });
  382.     });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement