Example #1
0
        /// <summary>
        /// Async Process
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override System.Threading.Tasks.Task <System.Net.Http.HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken)
        {
            using (Gale.Db.DataService svc = new Gale.Db.DataService("[PA_MOT_OBT_MisRutas]"))
            {
                svc.Parameters.Add("USUA_Token", this.Model);
                svc.Parameters.Add("MarcaTiempo", _timestamp);

                Gale.Db.EntityRepository rep = this.ExecuteQuery(svc);

                List <Models.Route> items = rep.GetModel <Models.Route>();

                DateTime stamp = items.Count > 0 ? items.Max((a) => a.createdAt) : _timestamp;
                //----------------------------------------------------------------------------------------------------
                //Create Response
                var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK)
                {
                    Content = new ObjectContent <Object>(
                        new
                    {
                        timestamp = stamp,
                        total     = items.Count,
                        items     = items
                    },
                        System.Web.Http.GlobalConfiguration.Configuration.Formatters.KqlFormatter()    //-> CAMEL_CASING RETRIEVE DIFERENT OBJECT =)
                        )
                };

                //Return Task
                return(Task.FromResult(response));
                //----------------------------------------------------------------------------------------------------
            }
        }
Example #2
0
        /// <summary>
        /// Async Process
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override Task <HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken)
        {
            using (Gale.Db.DataService svc = new Gale.Db.DataService("PA_MAE_OBT_AutenticarUsuario"))
            {
                svc.Parameters.Add("USUA_NombreUsuario", Model.username);
                svc.Parameters.Add("USUA_Contrasena", Gale.Security.Cryptography.MD5.GenerateHash(Model.password));
                Gale.Db.EntityRepository rep = this.ExecuteQuery(svc);

                Models.User user = rep.GetModel <Models.User>(0).FirstOrDefault();
                Gale.Db.EntityTable <Models.Profile> profiles = rep.GetModel <Models.Profile>(1);

                //------------------------------------------------------------------------------------------------------------------------
                //GUARD EXCEPTION
                Gale.Exception.RestException.Guard(() => user == null, "USERNAME_OR_PASSWORD_INCORRECT", Resources.Security.ResourceManager);
                //------------------------------------------------------------------------------------------------------------------------

                List <System.Security.Claims.Claim> claims = new List <System.Security.Claims.Claim>();

                claims.Add(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Email, user.email));
                claims.Add(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.PrimarySid, user.token.ToString()));
                claims.Add(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Name, user.fullname));
                claims.Add(new System.Security.Claims.Claim("photo", user.photo.ToString()));
                profiles.ForEach((perfil) =>
                {
                    claims.Add(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Role, perfil.identifier));
                });

                int expiration = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["Gale:Security:TokenTmeout"]);

                //RETURN TOKEN
                return(Task.FromResult(_request.CreateResponse <Gale.Security.Oauth.Jwt.Wrapper>(
                                           Gale.Security.Oauth.Jwt.Manager.CreateToken(claims, DateTime.Now.AddMinutes(expiration))
                                           )));
            }
        }
Example #3
0
        /// <summary>
        /// Async Process
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override System.Threading.Tasks.Task <System.Net.Http.HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken)
        {
            using (Gale.Db.DataService svc = new Gale.Db.DataService("PA_MOT_OBT_Escritorio"))
            {
                svc.Parameters.Add("USUA_Token", _user);

                svc.Parameters.Add("Rango", this.Model.range);
                svc.Parameters.Add("Fecha_Inicio", this.Model.start);
                svc.Parameters.Add("Fecha_Fin", this.Model.end);

                Gale.Db.EntityRepository rep = this.ExecuteQuery(svc);

                Models.Counters         counters = rep.GetModel <Models.Counters>().FirstOrDefault();
                List <Models.GraphItem> items    = rep.GetModel <Models.GraphItem>(1);

                //----------------------------------------------------------------------------------------------------
                //Create Response
                var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK)
                {
                    Content = new ObjectContent <Object>(
                        new
                    {
                        timestamp = DateTime.Now.ToString("s"),
                        counters  = counters,
                        graph     = items
                    },
                        System.Web.Http.GlobalConfiguration.Configuration.Formatters.JsonFormatter
                        )
                };

                //Return Task
                return(Task.FromResult(response));
                //----------------------------------------------------------------------------------------------------
            }
        }
Example #4
0
        /// <summary>
        /// Async Process
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override System.Threading.Tasks.Task <System.Net.Http.HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken)
        {
            using (Gale.Db.DataService svc = new Gale.Db.DataService("[PA_MOT_OBT_Ruta]"))
            {
                svc.Parameters.Add("USUA_Token", HttpContext.Current.User.PrimarySid());
                svc.Parameters.Add("RUTA_Token", this.Model);

                Gale.Db.EntityRepository rep = this.ExecuteQuery(svc);

                Models.Route              route       = rep.GetModel <Models.Route>().FirstOrDefault();
                Models.SocialRoute        socialRoute = rep.GetModel <Models.SocialRoute>().FirstOrDefault();
                List <Models.Coordinates> coords      = rep.GetModel <Models.Coordinates>(1);
                List <Models.RoutePhoto>  photos      = rep.GetModel <Models.RoutePhoto>(2);
                //----------------------------------------------------------------------------------------------------
                //Create Response
                var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK)
                {
                    Content = new ObjectContent <Object>(
                        new
                    {
                        details     = route,
                        coordinates = coords,
                        social      = socialRoute,
                        photos      = photos
                    },
                        System.Web.Http.GlobalConfiguration.Configuration.Formatters.KqlFormatter()
                        )
                };

                //Return Task
                return(Task.FromResult(response));
                //----------------------------------------------------------------------------------------------------
            }
        }
Example #5
0
        /// <summary>
        /// Obtiene la foto del usuario
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override Task <HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken)
        {
            //------------------------------------------------------------------------------------------------------
            // DB Execution
            using (Gale.Db.DataService svc = new Gale.Db.DataService("PA_MAE_OBT_ArchivoBinario"))
            {
                svc.Parameters.Add("ARCH_Token", _token);

                Gale.Db.EntityRepository rep = this.ExecuteQuery(svc);

                Models.FileData file = rep.GetModel <Models.FileData>().FirstOrDefault();

                if (file == null)
                {
                    return(Task.FromResult(new HttpResponseMessage(System.Net.HttpStatusCode.NotFound)));
                }

                //Create Response
                var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK)
                {
                    Content = new StreamContent(new System.IO.MemoryStream(file.binary.ToArray())),
                };

                response.Headers.CacheControl = new System.Net.Http.Headers.CacheControlHeaderValue()
                {
                    MaxAge = TimeSpan.FromMinutes(30)
                };

                //Add Content-Type Header
                response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(file.contentType);

                return(Task.FromResult(response));
            }
            //------------------------------------------------------------------------------------------------------
        }
Example #6
0
        /// <summary>
        /// Async Process
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override System.Threading.Tasks.Task <System.Net.Http.HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken)
        {
            //Check the Debug Access Token (Future Implementation)
            //http://stackoverflow.com/questions/8605703/how-to-verify-facebook-access-token

            //---------------------------------------------
            //Get Stream Image from the User
            byte[] imageBytes = null;
            if (Model.image != null)
            {
                try
                {
                    //Try to download the image
                    var webClient = new WebClient();
                    imageBytes = webClient.DownloadData(Model.image);
                }
                catch
                {
                }
            }

            using (Gale.Db.DataService svc = new Gale.Db.DataService("PA_MOT_OBT_AutenticarUsuarioExterno"))
            {
                svc.Parameters.Add("USUA_NombreCompleto", Model.name);
                svc.Parameters.Add("USUA_Email", Model.email);
                svc.Parameters.Add("AEXT_Identificador", Model.id);
                svc.Parameters.Add("ARCH_Binario", imageBytes);
                svc.Parameters.Add("ARCH_Tamano", imageBytes.Length);
                svc.Parameters.Add("TIAU_Identificador", "gmail");  //Facebook

                Gale.Db.EntityRepository rep = this.ExecuteQuery(svc);

                Models.User user = rep.GetModel <Models.User>(0).FirstOrDefault();
                Gale.Db.EntityTable <Models.Profile> profiles = rep.GetModel <Models.Profile>(1);

                //------------------------------------------------------------------------------------------------------------------------
                //GUARD EXCEPTION
                Gale.Exception.RestException.Guard(() => user == null, "USERNAME_OR_PASSWORD_INCORRECT", Resources.Security.ResourceManager);
                //------------------------------------------------------------------------------------------------------------------------

                List <System.Security.Claims.Claim> claims = new List <System.Security.Claims.Claim>();

                claims.Add(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Email, user.email));
                claims.Add(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.PrimarySid, user.token.ToString()));
                claims.Add(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Name, user.fullname));
                claims.Add(new System.Security.Claims.Claim("photo", user.photo.ToString()));
                profiles.ForEach((perfil) =>
                {
                    claims.Add(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Role, perfil.identifier));
                });

                int expiration = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["Gale:Security:TokenTmeout"]);

                //RETURN TOKEN
                return(Task.FromResult(_request.CreateResponse <Gale.Security.Oauth.Jwt.Wrapper>(
                                           Gale.Security.Oauth.Jwt.Manager.CreateToken(claims, DateTime.Now.AddMinutes(expiration))
                                           )));
            }
        }
Example #7
0
        /// text
        public static Models.Config GetConfiguration(String NameConfiguration, Gale.Db.IDataActions dataActions)
        {
            using (Gale.Db.DataService svc = new Gale.Db.DataService("PA_MAE_SEL_Configuracion"))
            {
                svc.Parameters.Add("@CONF_Nombre", NameConfiguration);

                Gale.Db.EntityRepository rep = dataActions.ExecuteQuery(svc);

                Models.Config result = rep.GetModel <Models.Config>().FirstOrDefault();
                return(result);
            }
        }
Example #8
0
        /// <summary>
        /// Async Process
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override System.Threading.Tasks.Task <System.Net.Http.HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken)
        {
            using (Gale.Db.DataService svc = new Gale.Db.DataService("PA_MOT_OBT_Perfl"))
            {
                svc.Parameters.Add("USUA_Token", this.Model);

                Gale.Db.EntityRepository rep = this.ExecuteQuery(svc);

                Models.Account                account  = rep.GetModel <Models.Account>().FirstOrDefault();
                List <Models.Role>            roles    = rep.GetModel <Models.Role>(1);
                Models.SocialProfile          counter  = rep.GetModel <Models.SocialProfile>(2).FirstOrDefault();
                Models.PersonalData           personal = rep.GetModel <Models.PersonalData>(3).FirstOrDefault();
                Models.Sport                  sport    = rep.GetModel <Models.Sport>(3).FirstOrDefault();
                List <Models.EmergencyPhones> phones   = rep.GetModel <Models.EmergencyPhones>(4);
                List <Models.Medal>           medals   = rep.GetModel <Models.Medal>(5);

                //----------------------------------------------------------------------------------------------------
                //Guard Exception's
                Gale.Exception.RestException.Guard(() => account == null, "ACCOUNT_DONT_EXISTS", API.Errors.ResourceManager);
                //----------------------------------------------------------------------------------------------------

                account.photo = (account.photo == System.Guid.Empty ? null : account.photo);

                if (personal != null)
                {
                    personal.emergencyPhones = (from t in phones select t.phone).ToList();
                }
                //----------------------------------------------------------------------------------------------------
                //Create Response
                var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK)
                {
                    Content = new ObjectContent <Object>(
                        new
                    {
                        account  = account,
                        roles    = roles,
                        sport    = sport,
                        personal = personal,
                        social   = counter,
                        medals   = medals
                    },
                        System.Web.Http.GlobalConfiguration.Configuration.Formatters.KqlFormatter()
                        )
                };

                //Return Task
                return(Task.FromResult(response));
                //----------------------------------------------------------------------------------------------------
            }
        }
Example #9
0
        /// text
        public static Models.Config GetConfiguration(Nullable <Guid> token, Gale.Db.IDataActions dataActions)
        {
            using (Gale.Db.DataService svc = new Gale.Db.DataService("PA_MAE_SEL_Configuracion"))
            {
                if (token != null)
                {
                    svc.Parameters.Add("@DOCU_Token", token);
                }
                svc.Parameters.Add("@CONF_Nombre", DBNull.Value);

                Gale.Db.EntityRepository rep = dataActions.ExecuteQuery(svc);

                Models.Config result = rep.GetModel <Models.Config>().FirstOrDefault();
                return(result);
            }
        }
Example #10
0
        /// <summary>
        /// Async Process
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override System.Threading.Tasks.Task <System.Net.Http.HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken)
        {
            //------------------------------------------------------------------------------------------------------
            // GUARD EXCEPTIONS
            Gale.Exception.RestException.Guard(() => _latitude == null, "LATITUDE_EMPTY", API.Errors.ResourceManager);
            Gale.Exception.RestException.Guard(() => _longitude == null, "LONGITUDE_EMPTY", API.Errors.ResourceManager);
            Gale.Exception.RestException.Guard(() => _distance == null, "DISTANCE_EMPTY", API.Errors.ResourceManager);
            //------------------------------------------------------------------------------------------------------

            using (Gale.Db.DataService svc = new Gale.Db.DataService("[PA_MOT_OBT_DescubrirRutas]"))
            {
                svc.Parameters.Add("USUA_Token", HttpContext.Current.User.PrimarySid());
                svc.Parameters.Add("Nombre", _route);
                svc.Parameters.Add("Distancia", _distance);
                svc.Parameters.Add("Latitud", _latitude);
                svc.Parameters.Add("Longitud", _longitude);
                svc.Parameters.Add("RegistrosPorPagina", _limit);
                svc.Parameters.Add("RegistrosSaltados", _offset);

                Gale.Db.EntityRepository rep = this.ExecuteQuery(svc);

                Models.Pagination             pagination = rep.GetModel <Models.Pagination>(0).FirstOrDefault();
                List <Models.DiscoveredRoute> routes     = rep.GetModel <Models.DiscoveredRoute>(1);
                //----------------------------------------------------------------------------------------------------
                //Create Response
                var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK)
                {
                    Content = new ObjectContent <Object>(
                        new
                    {
                        offset = _offset,
                        limit  = _limit,
                        total  = pagination.total,
                        items  = routes
                    },
                        System.Web.Http.GlobalConfiguration.Configuration.Formatters.KqlFormatter()
                        )
                };

                //Return Task
                return(Task.FromResult(response));
                //----------------------------------------------------------------------------------------------------
            }
        }
Example #11
0
        private Result _Execute(String query, Gale.Db.IDataActions databaseFactory)
        {
            System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
            timer.Start();

            //-------------------------------------------------------------------------------------
            //---[ DATABASE CALL
            using (Gale.Db.DataService svc = new Gale.Db.DataService(query))
            {
                System.Data.DataTable    db_data       = null;
                System.Data.DataTable    db_pagination = null;
                Gale.Db.EntityRepository rep           = null;

                try
                {
                    //Create the repository
                    rep = this.DatabaseFactory.ExecuteSql(svc);

                    db_data       = rep.GetRawTable(0);
                    db_pagination = rep.GetRawTable(1);
                }
                catch (System.Exception ex)
                {
                    string message = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                    throw new Gale.Exception.GaleException("API_DB_ERROR", message);
                }

                //--------[ GET ALL DATA IN AN ARRAY
                var data = new List <List <Object> >();
                SortedList <int, Field> ordinalsFields = new SortedList <int, Field>();

                var columns_count = db_data.Columns.Count;

                #region ORDINAL COLUMN SEARCH
                //SEARCH FOR ORDINAL'S
                foreach (Field field in _reflectedModel.SelectedFields)
                {
                    for (var column_index = 0; column_index < columns_count; column_index++)
                    {
                        if (field.Key.ToLower() == db_data.Columns[column_index].ColumnName.ToLower())
                        {
                            ordinalsFields.Add(db_data.Columns[column_index].Ordinal, field);
                            break;
                        }
                    }
                }
                #endregion


                if (db_pagination.Rows.Count != 1)
                {
                    throw new Gale.Exception.GaleException("API003");
                }
                int total = Convert.ToInt32(db_pagination.Rows[0]["total"]);

                #region TABLE FORMAT

                //Save all data from the foreign table for the descriptor's
                SortedList <Type, Gale.Db.IEntityTable> _foreignTableDatas = new SortedList <Type, Gale.Db.IEntityTable>();

                //Starting Fetching Data
                for (var row_index = 0; row_index < db_data.Rows.Count; row_index++)
                {
                    List <Object> item = new List <Object>();

                    foreach (int ordinal in ordinalsFields.Keys)
                    {
                        Field field = ordinalsFields[ordinal];

                        Object db_value = db_data.Rows[row_index][ordinal];

                        if (db_value is DateTime)
                        {
                            db_value = DateTime.SpecifyKind((DateTime)db_value, DateTimeKind.Local);
                        }

                        //If is FK , try to get the Descriptor, if not have descriptor, send Encripted Value :S
                        if (field.Specification == Field.SpecificationEnum.Fk)
                        {
                            Table table = _reflectedModel.Constraints.First(constraint => constraint.ThisField == field).Table;

                            if (table.Descriptor != null)
                            {
                                Gale.Db.IEntityTable tableData;
                                _foreignTableDatas.TryGetValue(table.Type, out tableData);

                                #region CREATE DATA TABLE FROM THE CURRENT SOURCE IF NOT EXIST YET
                                if (tableData == null)
                                {
                                    //Create Constraint Table Data
                                    System.Reflection.MethodInfo baseMethod = (from t in rep.GetType().GetMethods()
                                                                               where
                                                                               t.GetGenericArguments().Count() > 0 &&
                                                                               t.Name == "GetModel" && t.GetParameters().Count() == 0
                                                                               select t).FirstOrDefault();

                                    System.Reflection.MethodInfo GetModelMethod = baseMethod.MakeGenericMethod(table.Type);

                                    tableData = (Gale.Db.IEntityTable)GetModelMethod.Invoke(rep, null);
                                    _foreignTableDatas.Add(table.Type, tableData);
                                }
                                #endregion


                                //GET Constraint Function Expression to Get the FK Descriptor
                                Object _item = tableData.GetType().GetMethod("get_Item").Invoke(tableData, new object[] { row_index });
                                db_value = table.Descriptor.DynamicInvoke(_item).ToString();
                            }
                        }

                        item.Add(db_value);    //Column Value
                    }
                    data.Add(item);
                }
                #endregion

                timer.Stop();
                var response = new Gale.REST.Queryable.Primitive.Result(total, timer.Elapsed, _reflectedModel.SelectedFields, data);


                return(response);
            }
            //-------------------------------------------------------------------------------------
        }