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/model/json/JSONModel",
- "sap/ui/core/Fragment",
- "sap/m/MessageBox",
- "sap/ui/core/UIComponent",
- "academia2022/zjuegospa/model/formatter",
- "sap/ui/model/Filter",
- "sap/ui/model/FilterOperator"
- ],
- /**
- * @param {typeof sap.ui.core.mvc.Controller} Controller
- */
- function (Controller, MessageToast, JSONModel, Fragment, MessageBox, UIComponent, formatter, Filter, FilterOperator) {
- "use strict";
- var oThis;
- return Controller.extend("academia2022.zjuegospa.controller.Companias", {
- formatter: formatter,
- onInit: function () {
- oThis = this;
- //modelo usado para configuraciones de la vista
- var oViewModel = new JSONModel({
- esEditarCompania: false
- });
- this.getView().setModel(oViewModel, "vista");
- //modelo usado para la creación y modificación de companias (JSON - cliente)
- var oCompaniaModel = new JSONModel();
- this.getView().setModel(oCompaniaModel, "compania");
- var oCompaniasModel = new JSONModel();
- this.getView().byId("idTablaCompanias").setModel(oCompaniasModel, "companiasJson");
- },
- onAfterRendering: function () {
- this.traerCompanias();
- },
- /* ----------------------------------- */
- //CRUD - DELETE ENTITY
- /* ----------------------------------- */
- borrarCompania: function (oEvent) {
- let oModel = this.getView().getModel();
- let path = oEvent.getSource().getBindingContext().getPath();
- MessageBox.warning("Se borrará la compañía seleccionada, además de sus juegos. ¿Desea continuar?", {
- actions: [MessageBox.Action.OK, MessageBox.Action.CANCEL],
- emphasizedAction: MessageBox.Action.OK,
- onClose: function (sAction) {
- if (sAction === 'OK') {
- oModel.remove(path, {
- success: function (CompaniaBack) {
- let sMsg = "Se eliminó la Compañía";
- MessageToast.show(sMsg);
- }.bind(this),
- error: function (oError) {
- MessageToast.show("Error al conectar con SAP");
- }.bind(this)
- });
- }
- }.bind(this)
- });
- },
- /* ----------------------------------- */
- //CRUD - UPDATE ENTITY
- /* ----------------------------------- */
- editarCompania: function (oEvent) {
- let oModel = this.getView().getModel();
- let oCompania = this.getView().getModel("compania").getData();
- let cantidadDevs = oCompania.CantidadDesarrolladores;
- oCompania.CantidadDesarrolladores = parseInt(cantidadDevs);
- let path = oModel.createKey("/CompaniaSet", {
- IdCompania: oCompania.IdCompania
- });
- if (!this.validarUrlLogo()) {
- this.getView().byId("urlLogo").setValueState(sap.ui.core.ValueState.Error);
- }
- if (!this.validarNombreCompania()) {
- this.getView().byId("nombreCompania").setValueState(sap.ui.core.ValueState.Error);
- }
- if (!this.validarIngresosAnuales()) {
- this.getView().byId("ingresosAnuales").setValueState(sap.ui.core.ValueState.Error);
- }
- if (!this.validarEmail()) {
- this.getView().byId("mailContacto").setValueState(sap.ui.core.ValueState.Error);
- }
- if (!this.validarSitioWeb()) {
- this.getView().byId("sitioWeb").setValueState(sap.ui.core.ValueState.Error);
- }
- if (!this.validarCantidadDesarrolladores()) {
- this.getView().byId("cantidadDesarrolladores").setValueState(sap.ui.core.ValueState.Error);
- }
- if (this.validarUrlLogo() && this.validarNombreCompania() && this.validarIngresosAnuales() && this.validarEmail() &&
- this.validarSitioWeb() && this.validarCantidadDesarrolladores()) {
- oModel.update(path, oCompania, {
- success: function (CompaniaBack) {
- MessageToast.show("Se modificó la compañía " + oCompania.NombreCompania);
- this.onCloseDialogCompania();
- }.bind(this),
- error: function (oError) {
- MessageToast.show("Hubo un error, por lo que no se pudo modificar la compañía");
- }
- });
- } else {
- MessageToast.show("No se pudo modificar la compañía. Por favor, verifique los datos ingresados");
- }
- },
- validarUrlLogo: function () {
- var urlLogo = this.getView().byId("urlLogo").getValue();
- var urlLogoregex = /(http(s?):)([/|.|\w|\s|-])*\.(?:jpg|gif|png)/;
- if (!urlLogoregex.test(urlLogo)) {
- return false;
- } else {
- return true;
- }
- },
- validarNombreCompania: function () {
- var nombreCompania = this.getView().byId("nombreCompania").getValue();
- var nombreCompregex = /^[A-Z][a-z]+\s[A-Z][a-z]+$/;
- var nombreSinEspacioCompregex = /^([ \u00c0-\u01ffa-zA-Z'\-])+$/;
- if (!nombreCompregex.test(nombreCompania) && !nombreSinEspacioCompregex.test(nombreCompania)) {
- return false;
- } else {
- return true;
- }
- },
- validarIngresosAnuales: function () {
- var ingresosAnuales = this.getView().byId("ingresosAnuales").getValue();
- var ingresosAnualesregex = /^\d+(\.\d+)*$/;
- if (!ingresosAnualesregex.test(ingresosAnuales)) {
- return false;
- } else {
- return true;
- }
- },
- validarEmail: function () {
- var email = this.getView().byId("mailContacto").getValue();
- 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])?/;
- if (!mailregex.test(email)) {
- return false;
- } else {
- return true;
- }
- },
- validarSitioWeb: function () {
- var sitioWeb = this.getView().byId("sitioWeb").getValue();
- var sitioWebregex = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/;
- if (!sitioWebregex.test(sitioWeb)) {
- return false;
- } else {
- return true;
- }
- },
- validarCantidadDesarrolladores: function () {
- var cantidadDesarrolladores = this.getView().byId("cantidadDesarrolladores").getValue();
- var cantidadDesarrolladoresregex = /^[0-9]+$/;
- if (!cantidadDesarrolladoresregex.test(cantidadDesarrolladores)) {
- return false;
- } else {
- return true;
- }
- },
- /* ----------------------------------- */
- //CRUD - CREATE ENTITY
- /* ----------------------------------- */
- crearCompania: function () {
- let oModel = this.getView().getModel();
- let oCompania = this.getView().getModel("compania").getData();
- oCompania.CantidadDesarrolladores = parseInt(oCompania.CantidadDesarrolladores);
- if (!this.validarUrlLogo()) {
- this.getView().byId("urlLogo").setValueState(sap.ui.core.ValueState.Error);
- }
- if (!this.validarNombreCompania()) {
- this.getView().byId("nombreCompania").setValueState(sap.ui.core.ValueState.Error);
- }
- if (!this.validarIngresosAnuales()) {
- this.getView().byId("ingresosAnuales").setValueState(sap.ui.core.ValueState.Error);
- }
- if (!this.validarEmail()) {
- this.getView().byId("mailContacto").setValueState(sap.ui.core.ValueState.Error);
- }
- if (!this.validarSitioWeb()) {
- this.getView().byId("sitioWeb").setValueState(sap.ui.core.ValueState.Error);
- }
- if (!this.validarCantidadDesarrolladores()) {
- this.getView().byId("cantidadDesarrolladores").setValueState(sap.ui.core.ValueState.Error);
- } if (this.validarUrlLogo() && this.validarNombreCompania() && this.validarIngresosAnuales() && this.validarEmail() &&
- this.validarSitioWeb() && this.validarCantidadDesarrolladores()) {
- oModel.create("/CompaniaSet", oCompania, {
- success: function (oCompania) {
- MessageToast.show("Se creó la compañía " + oCompania.NombreCompania);
- this.getView().byId("urlLogo").setValueState(sap.ui.core.ValueState.None);
- this.getView().byId("nombreCompania").setValueState(sap.ui.core.ValueState.None);
- this.getView().byId("ingresosAnuales").setValueState(sap.ui.core.ValueState.None);
- this.getView().byId("mailContacto").setValueState(sap.ui.core.ValueState.None);
- this.getView().byId("sitioWeb").setValueState(sap.ui.core.ValueState.None);
- this.getView().byId("cantidadDesarrolladores").setValueState(sap.ui.core.ValueState.None);
- this.onCloseDialogCompania();
- }.bind(this),
- error: function (oError) {
- MessageToast.show("Hubo un error al crear la compañía");
- }
- });
- } else {
- MessageToast.show("No se pudo crear la compañía. Por favor, verifique los datos ingresados");
- }
- },
- //abrir popup en modo creación
- abrirPopUpCreacion: function () {
- this.getView().getModel("vista").setProperty("/esEditarCompania", false);
- let oDataCompania = {
- UrlLogo: "",
- NombreCompania: "",
- IngresosAnuales: "",
- MailContacto: "",
- SitioWeb: "",
- CantidadDesarrolladores: ""
- }
- this.getView().getModel("compania").setData(oDataCompania);
- this._abrirPopUpCompania();
- },
- //abrir popup en modo edición
- abrirPopUpEdicion: function (evento) {
- this.getView().getModel("vista").setProperty("/esEditarCompania", true);
- let Compania = evento.getSource().getBindingContext().getObject();
- this.getView().getModel("compania").setData(Compania);
- this._abrirPopUpCompania();
- },
- /* ----------------------------------- */
- //CRUD - GET ENTITY
- /* ----------------------------------- */
- traerCompania: function (oEvent) {
- let oModel = this.getView().getModel();
- oModel.read("/CompaniaSet(IdCompania=1)", {
- success: function (oData) {
- MessageToast.show("Se creó la compañía");
- },
- error: function (oError) {
- MessageToast.show("Error al conectar con SAP");
- }
- })
- },
- /* ----------------------------------- */
- //CRUD - GET ENTITY SET
- /* ----------------------------------- */
- traerCompanias: function () {
- let oModel = this.getView().getModel();
- oModel.read("/CompaniaSet", {
- success: function (oData) {
- this.getView().byId("idTablaCompanias").getModel("companiasJson").setData(oData.results);
- }.bind(this),
- error: function (oError) {
- this.getView().byId("idTablaCompanias").getModel("companiasJson").setData([]);
- }.bind(this)
- });
- },
- _abrirPopUpCompania: function () {
- if (!this.dialogCompania) {
- Fragment.load({
- name: "academia2022.zjuegospa.view.fragments.PopUpCompania",
- controller: this,
- id: this.getView().getId()
- }).then(function (oPopup) {
- this._oDialogCompania = oPopup;
- this.getView().addDependent(oPopup);
- this._oDialogCompania.attachAfterClose(function (oEvent) {
- oEvent.getSource().destroy();
- });
- this._oDialogCompania.open();
- }.bind(this));
- }
- },
- onCloseDialogCompania: function () {
- this._oDialogCompania.close();
- },
- navegarCompaniaDetalle: function (oEvent) {
- let Compania = oEvent.getSource().getBindingContext().getObject();
- var oRouter = UIComponent.getRouterFor(this);
- oRouter.navTo("RouteCompaniaDetalle", {
- IdCompania: Compania.IdCompania
- });
- },
- onSearch: function () {
- var nombreCompania = this.getView().byId("inputNombreCompania").getValue();
- var aFilters = [];
- if (nombreCompania) {
- aFilters.push(new Filter("NombreCompania", FilterOperator.Contains, nombreCompania));
- }
- var oTabla = this.getView().byId("idTablaCompanias");
- oTabla.getBinding("items").filter(aFilters);
- },
- abrirValueHelp: function(oEvent){
- if(!this._oValueHelpCompania){
- Fragment.load({
- name: "academia2022.zjuegospa.view.fragments.valueHelpCompanias",
- controller: this,
- id: this.getView().getId()
- }).then(function (oPopup) {
- this._oValueHelpCompania = oPopup;
- this.getView().addDependent(oPopup);
- this._oValueHelpCompania.open();
- }.bind(this));
- } else {
- this._oValueHelpCompania.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("inputNombreCompania").setValue(aContexts[0].getProperty("NombreCompania"))
- }
- },
- buscarCompania: function (oEvent) {
- var sValue = oEvent.getParameter("value");
- var oFilter = new Filter("NombreCompania", 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