Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sap.ui.define([
- "sap/ui/core/mvc/Controller",
- "sap/m/MessageToast",
- "sap/ui/core/UIComponent",
- "sap/ui/model/json/JSONModel",
- "sap/ui/core/Fragment",
- "sap/m/MessageBox",
- "academia2022/zjuegospa/model/formatter",
- "sap/ui/model/Filter",
- "sap/ui/model/FilterOperator"
- ],
- /**
- * @param {typeof sap.ui.core.mvc.Controller} Controller
- */
- function (Controller, MessageToast, UIComponent, JSONModel, Fragment, MessageBox, formatter, Filter, FilterOperator) {
- "use strict";
- var oThis;
- return Controller.extend("academia2022.zjuegospa.controller.CompaniaDetalle", {
- formatter: formatter,
- onInit: function () {
- oThis = this;
- //modelo usado para configuraciones de la vista
- var oViewModel = new JSONModel({
- esEditarJuego: false
- });
- this.getView().setModel(oViewModel, "vista");
- //modelo usado para la creación y modificación de juegos (JSON - cliente)
- var oJuegoModel = new JSONModel();
- this.getView().setModel(oJuegoModel, "juego");
- var oJuegosModel = new JSONModel();
- this.getView().byId("idTablaCompaniaDetalle").setModel(oJuegosModel, "juegosJson");
- let oRouter = UIComponent.getRouterFor(this);
- oRouter.getRoute("RouteCompaniaDetalle").attachPatternMatched(this._onRouteMatched, this);
- },
- /* ----------------------------------- */
- //CRUD - GET ENTITY SET
- /* ----------------------------------- */
- traerJuegos: function () {
- let oModel = this.getView().getModel();
- oModel.read("/JuegoSet", {
- success: function (oData) {
- this.getView().byId("idTablaCompaniaDetalle").getModel("juegosJson").setData(oData.results);
- }.bind(this),
- error: function (oError) {
- this.getView().byId("idTablaCompaniaDetalle").getModel("juegosJson").setData([]);
- }.bind(this)
- });
- },
- onAfterRendering: function () {
- this.traerJuegos();
- },
- _onRouteMatched: function (oEvent) {
- let IdCompania = oEvent.getParameter("arguments").IdCompania;
- IdCompania = parseInt(IdCompania);
- this._IdCompania = IdCompania;
- this.getView().getModel().metadataLoaded().then(
- function () {
- let path = this.getView().getModel().createKey("/CompaniaSet", {
- IdCompania: IdCompania
- });
- this.getView().bindElement({ path: path });
- this.getView().getModel().refresh();
- }.bind(this)
- );
- },
- // Dispara un Popup para iniciar la carga de juegos
- onAddJuegos: function () {
- if (!this.dialogAddJuegos) {
- Fragment.load({
- name: "academia2022.zjuegospa.view.fragments.AgregarJuegos",
- controller: this,
- id: this.getView().getId()
- }).then(function (oPopup) {
- //se asigna un control en una variable, para poder capturarlo luego
- this._oDialogAddJuegos = oPopup;
- this.getView().addDependent(oPopup);
- //destruirlo cuando lo cierro
- this._oDialogAddJuegos.attachAfterClose(function (oEvent) {
- oEvent.getSource().destroy();
- });
- //Modelo inicial cuando abre el popup
- this._oDialogAddJuegos.attachAfterOpen(function () {
- var oModeloJuegos = new JSONModel([
- {
- NombreJuego: "",
- UrlLogoJuego: "",
- Precio: "",
- FechaLanzamiento: new Date(),
- Multijugador: "",
- EnLinea: ""
- }
- ]);
- this._oDialogAddJuegos.setModel(oModeloJuegos, "AgregarJuegos");
- }.bind(this));
- this._oDialogAddJuegos.open();
- }.bind(this));
- }
- // this.traerJuegos();
- },
- onCloseDialogJuegos: function () {
- this._oDialogAddJuegos.close();
- },
- onCloseDialogJuego: function () {
- this._oDialogJuego.close();
- },
- onAddLineaJuego: function () {
- var aJuegos = this._oDialogAddJuegos.getModel("AgregarJuegos").getData();
- aJuegos.push({
- NombreJuego: "",
- UrlLogoJuego: "",
- Precio: "",
- FechaLanzamiento: new Date(),
- Multijugador: "",
- EnLinea: ""
- });
- this._oDialogAddJuegos.getModel("AgregarJuegos").setData(aJuegos);
- },
- validarArrayJuegos: function (aJuegos) {
- let valido = true;
- var urlLogoJuegoregex = /(http(s?):)([/|.|\w|\s|-])*\.(?:jpg|gif|png)/;
- var nombreJuegoregex = /[A-Za-z\d\s]/;
- var nombreSinEspacioJuegoregex = /^([ \u00c0-\u01ffa-zA-Z'\-])+$/;
- var precioJuegoregex = /^[0-9]+$/;
- aJuegos.forEach(juego => {
- if (juego.UrlLogoJuego == "" || !urlLogoJuegoregex.test(juego.UrlLogoJuego)) {
- valido = false;
- }
- if (juego.NombreJuego == "" || (!nombreSinEspacioJuegoregex.test(juego.NombreJuego) && !nombreJuegoregex.test(juego.NombreJuego))) {
- valido = false;
- }
- if (juego.Precio == "" || !precioJuegoregex.test(juego.Precio)) {
- valido = false;
- }
- });
- return valido;
- },
- /* ----------------------------------- */
- //CRUD - CREATE DEEP ENTITY (1 O MUCHOS)
- /* ----------------------------------- */
- onSaveJuegos: function (params) {
- var aJuegos = this._oDialogAddJuegos.getModel("AgregarJuegos").getData();
- var oData = {
- IdCompania: this._IdCompania
- };
- formatter.formatearSelects(aJuegos);
- oData.To_Juegos = aJuegos;
- if (this.validarArrayJuegos(aJuegos)) {
- this.getView().getModel().create("/CompaniaSet" , oData, {
- success: function (aJuegos) {
- MessageToast.show("Éxito");
- this.onCloseDialogJuegos();
- this.getView().getModel().refresh();
- }.bind(this),
- error: function (oError) {
- MessageToast.show("Error");
- }.bind(this)
- });
- } else {
- MessageToast.show("No se pudo agregar ningún juego. Verifique todos los ingresos");
- }
- },
- /* ----------------------------------- */
- //CRUD - DELETE ENTITY
- /* ----------------------------------- */
- borrarJuego: function (oEvent) {
- let oModel = this.getView().getModel();
- let path = oEvent.getSource().getBindingContext().getPath();
- MessageBox.warning("Se borrará el juego seleccionado. ¿Desea continuar?", {
- actions: [MessageBox.Action.OK, MessageBox.Action.CANCEL],
- emphasizedAction: MessageBox.Action.OK,
- onClose: function (sAction) {
- if (sAction === 'OK') {
- oModel.remove(path, {
- success: function (JuegoBack) {
- let sMsg = "Se eliminó el juego";
- MessageToast.show(sMsg);
- }.bind(this),
- error: function (oError) {
- MessageToast.show("Error al conectar con SAP");
- }.bind(this)
- });
- }
- }.bind(this)
- });
- },
- validarUrlLogoJuego: function () {
- var urlLogoJuego = this.getView().byId("urlLogoJuego").getValue();
- var urlLogoJuegoregex = /(http(s?):)([/|.|\w|\s|-])*\.(?:jpg|gif|png)/;
- if (urlLogoJuego == "" || !urlLogoJuegoregex.test(urlLogoJuego)) {
- return false;
- } else {
- return true;
- }
- },
- validarNombreJuego: function () {
- var nombreJuego = this.getView().byId("nombreJuego").getValue();
- var nombreJuegoregex = /[A-Za-z\d\s]/;
- var nombreSinEspacioJuegoregex = /^([ \u00c0-\u01ffa-zA-Z'\-])+$/;
- if (nombreJuego == "" || (!nombreSinEspacioJuegoregex.test(nombreJuego) && !nombreJuegoregex.test(nombreJuego))) {
- return false;
- } else {
- return true;
- }
- },
- validarPrecio: function () {
- var precioJuego = this.getView().byId("precio").getValue();
- var precioJuegoregex = /^\d+(\.\d+)*$/;
- if (precioJuego == "" || !precioJuegoregex.test(precioJuego)) {
- return false;
- } else {
- return true;
- }
- },
- validarSelectMultijugador: function () {
- var multijugador = this.getView().byId("selectMultijugador").getSelectedKey();
- if (multijugador == "D" || multijugador == "N") {
- return true;
- } else {
- return false;
- }
- },
- validarSelectEnLinea: function () {
- var enLinea = this.getView().byId("selectEnLinea").getSelectedKey();
- if (enLinea == "D" || enLinea == "N") {
- return true;
- } else {
- return false;
- }
- },
- /* ----------------------------------- */
- //CRUD - UPDATE ENTITY
- /* ----------------------------------- */
- editarJuego: function (oEvent) {
- let oModel = this.getView().getModel();
- let oJuego = this.getView().getModel("juego").getData();
- formatter.formatearSelect(oJuego);
- let path = oModel.createKey("/JuegoSet", {
- IdJuego: oJuego.IdJuego,
- IdCompania: oJuego.IdCompania
- });
- if (!this.validarUrlLogoJuego()) {
- this.getView().byId("urlLogoJuego").setValueState(sap.ui.core.ValueState.Error);
- }
- if (!this.validarNombreJuego()) {
- this.getView().byId("nombreJuego").setValueState(sap.ui.core.ValueState.Error);
- }
- if (!this.validarPrecio()) {
- this.getView().byId("precio").setValueState(sap.ui.core.ValueState.Error);
- }
- if (!this.validarSelectMultijugador()) {
- this.getView().byId("selectMultijugador").setValueState(sap.ui.core.ValueState.Error);
- }
- if (!this.validarSelectEnLinea()) {
- this.getView().byId("selectEnLinea").setValueState(sap.ui.core.ValueState.Error);
- }
- if (this.validarUrlLogoJuego() && this.validarNombreJuego() && this.validarPrecio() &&
- this.validarSelectMultijugador() && this.validarSelectEnLinea()) {
- oModel.update(path, oJuego, {
- success: function (JuegoBack) {
- let sMsg = "Se modificó el juego " + oJuego.NombreJuego;
- MessageToast.show(sMsg);
- this.onCloseDialogJuego();
- }.bind(this),
- error: function (oError) {
- MessageToast.show("Error al conectar con SAP");
- }
- });
- } else {
- MessageToast.show("No se pudo modificar el juego. Por favor, verifique los datos ingresados");
- }
- },
- _abrirPopUpJuego: function () {
- if (!this.dialogAddJuegos) {
- Fragment.load({
- name: "academia2022.zjuegospa.view.fragments.PopUpJuego",
- controller: this,
- id: this.getView().getId()
- }).then(function (oPopup) {
- this._oDialogJuego = oPopup;
- this.getView().addDependent(oPopup);
- this._oDialogJuego.attachAfterClose(function (oEvent) {
- oEvent.getSource().destroy();
- });
- this._oDialogJuego.open();
- }.bind(this));
- }
- },
- abrirPopUpEdicion: function (evento) {
- this.getView().getModel("vista");
- let Juego = evento.getSource().getBindingContext().getObject();
- this.getView().getModel("juego").setData(Juego);
- this._abrirPopUpJuego();
- },
- onCancelar: function () {
- this._oDialogJuego.close();
- },
- onSearch: function () {
- var nombreJuego = this.getView().byId("inputNombreJuego").getValue();
- var multijugador = this.getView().byId("selectFilterMultijugador").getSelectedKey();
- var enLinea = this.getView().byId("selectFilterEnLinea").getSelectedKey();
- if (multijugador == "D") {
- multijugador = true;
- } else if (multijugador == "N") {
- multijugador = false;
- }
- if (enLinea == "D") {
- enLinea = true;
- } else if (enLinea == "N") {
- enLinea = false;
- }
- var aFilters = [];
- if (nombreJuego) {
- aFilters.push(new Filter("NombreJuego", FilterOperator.Contains, nombreJuego));
- }
- // Solo ejecuta los filtros de select si tienen true o false para comparar con BD
- if (multijugador == true || multijugador == false) {
- aFilters.push(new Filter("Multijugador", FilterOperator.EQ, multijugador));
- }
- if (enLinea == true || enLinea == false) {
- aFilters.push(new Filter("EnLinea", FilterOperator.EQ, enLinea));
- }
- var oTabla = this.getView().byId("idTablaCompaniaDetalle");
- oTabla.getBinding("items").filter(aFilters);
- },
- navegarJuegoDetalle: function (oEvent) {
- let Juego = oEvent.getSource().getBindingContext().getObject();
- var oRouter = UIComponent.getRouterFor(this);
- oRouter.navTo("RouteJuegoDetalle", {
- IdJuego: Juego.IdJuego,
- IdCompania: Juego.IdCompania
- });
- },
- onVolverACompanias: function () {
- var oRouter = UIComponent.getRouterFor(this);
- oRouter.navTo("RouteCompanias", { });
- },
- abrirValueHelp: function(oEvent){
- if(!this._oValueHelpJuego){
- Fragment.load({
- name: "academia2022.zjuegospa.view.fragments.valueHelpJuegos",
- controller: this,
- id: this.getView().getId()
- }).then(function (oPopup) {
- this._oValueHelpJuego = oPopup;
- this.getView().addDependent(oPopup);
- this._oValueHelpJuego.open();
- }.bind(this));
- } else {
- this._oValueHelpJuego.open();
- }
- },
- cerrarValueHelp: function(oEvent){
- var aContexts = oEvent.getParameter("selectedContexts");
- if (aContexts && aContexts.length) {
- // MessageToast.show("You have chosen " + aContexts.map(function (oContext) { return oContext.getObject().Name; }).join(", "));
- this.getView().byId("inputNombreJuego").setValue(aContexts[0].getProperty("NombreJuego"))
- }
- },
- buscarJuego: function (oEvent) {
- var sValue = oEvent.getParameter("value");
- var oFilter = new Filter("NombreJuego", FilterOperator.Contains, sValue);
- if (sValue) {
- var oBinding = oEvent.getParameter("itemsBinding");
- oBinding.filter([oFilter]);
- } else {
- var oBinding = oEvent.getParameter("itemsBinding");
- oBinding.filter([]);
- }
- }
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement