예제 #1
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))
                                           )));
            }
        }
예제 #2
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));
                //----------------------------------------------------------------------------------------------------
            }
        }
예제 #3
0
        public override Task <System.Net.Http.HttpResponseMessage> ExecuteAsync(string token, System.Threading.CancellationToken cancellationToken)
        {
            Gale.Exception.RestException.Guard(() => token == null, "BODY_EMPTY", API.Resources.Errors.ResourceManager);


            using (Gale.Db.DataService svc = new Gale.Db.DataService("PA_DEL_PAGO"))
            {
                var tokenResponse = Guid.NewGuid();
                var tokenusuario  = HttpContext.Current.User.PrimarySid();

                svc.Parameters.Add("Token", token);
                svc.Parameters.Add("TokenUsuario", tokenusuario);

                tokenResponse = (Guid)this.ExecuteScalar(svc);
                return(Task.FromResult(new HttpResponseMessage()
                {
                    Content = new ObjectContent <Object>(new
                    {
                        tokenResponse = tokenResponse
                    },
                                                         System.Web.Http.GlobalConfiguration.Configuration.Formatters.JsonFormatter),
                    StatusCode = System.Net.HttpStatusCode.Created
                }));
            }
        }
예제 #4
0
파일: View.cs 프로젝트: dmunozgaete/MotoApp
        /// <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));
            }
            //------------------------------------------------------------------------------------------------------
        }
예제 #5
0
파일: Put.cs 프로젝트: lnunezp/API_Net-Gale
        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_UPD_USUARIO"))
            {
                var token = Guid.NewGuid();

                svc.Parameters.Add("NAME", this.Model.NAME);
                svc.Parameters.Add("LASTNAME", this.Model.LASTNAME);
                svc.Parameters.Add("USERNAME", this.Model.USERNAME);
                svc.Parameters.Add("PASSWORD", Gale.Security.Cryptography.MD5.GenerateHash(this.Model.PASSWORD));
                svc.Parameters.Add("MAIL", this.Model.MAIL);
                svc.Parameters.Add("TOKEN", this.Model.TOKEN);

                token = (Guid)this.ExecuteScalar(svc);
                return(Task.FromResult(new HttpResponseMessage()
                {
                    Content = new ObjectContent <Object>(new
                    {
                        token = token
                    },
                                                         System.Web.Http.GlobalConfiguration.Configuration.Formatters.JsonFormatter),
                    StatusCode = System.Net.HttpStatusCode.Created
                }));
            }
        }
예제 #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)
        {
            using (Gale.Db.DataService svc = new Gale.Db.DataService("PA_MOT_CHK_Medallas"))
            {
                svc.Parameters.Add("USUA_Token", this.Model);
                svc.Parameters.Add("MECA_Identificador", _category);

                var rep       = this.ExecuteQuery(svc);
                var details   = rep.GetModel <Models.NewDetails>().FirstOrDefault();
                var newMedals = rep.GetModel <Models.NewMedal>(1);

                //----------------------------------------------------------------------------------------------------
                //Create Response
                var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK)
                {
                    Content = new ObjectContent <Object>(
                        new
                    {
                        details = details,
                        medals  = newMedals
                    },
                        System.Web.Http.GlobalConfiguration.Configuration.Formatters.KqlFormatter()
                        )
                };

                //Return Task
                return(Task.FromResult(response));
                //----------------------------------------------------------------------------------------------------
            }
        }
예제 #7
0
파일: Put.cs 프로젝트: lnunezp/API_Net-Gale
        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_UPD_CLIENTE"))
            {
                var token = Guid.NewGuid();

                svc.Parameters.Add("TOKEN", this.Model.TOKEN);
                svc.Parameters.Add("NAME", this.Model.NAME);
                svc.Parameters.Add("LASTNAME", this.Model.LASTNAME);
                svc.Parameters.Add("EMAIL", this.Model.EMAIL);
                svc.Parameters.Add("MOBILE", this.Model.MOBILE);
                svc.Parameters.Add("PHONE", this.Model.PHONE);
                svc.Parameters.Add("RUT", this.Model.RUT);
                svc.Parameters.Add("DV", this.Model.DV);

                token = (Guid)this.ExecuteScalar(svc);
                return(Task.FromResult(new HttpResponseMessage()
                {
                    Content = new ObjectContent <Object>(new
                    {
                        token = token
                    },
                                                         System.Web.Http.GlobalConfiguration.Configuration.Formatters.JsonFormatter),
                    StatusCode = System.Net.HttpStatusCode.Created
                }));
            }
        }
예제 #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_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));
                //----------------------------------------------------------------------------------------------------
            }
        }
예제 #9
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));
                //----------------------------------------------------------------------------------------------------
            }
        }
예제 #10
0
        /// <summary>
        ///  Update User
        /// </summary>
        /// <param name="token"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override Task <System.Net.Http.HttpResponseMessage> ExecuteAsync(string token, System.Threading.CancellationToken cancellationToken)
        {
            //------------------------------------------------------------------------------------------------------
            // GUARD EXCEPTIONS
            Gale.Exception.RestException.Guard(() => Model == null, "BODY_EMPTY", API.Errors.ResourceManager);
            Gale.Exception.RestException.Guard(() => Model.sport == String.Empty, "SPORT_EMPTY", API.Errors.ResourceManager);
            //------------------------------------------------------------------------------------------------------

            //------------------------------------------------------------------------------------------------------
            // DB Execution
            using (Gale.Db.DataService svc = new Gale.Db.DataService("PA_MOT_UPD_Perfil"))
            {
                svc.Parameters.Add("USUA_Token", token);
                svc.Parameters.Add("TIDE_Identificador", Model.sport);
                if (Model.emergencyPhones != null)
                {
                    svc.Parameters.Add("Telefonos", String.Join(",", Model.emergencyPhones));
                }

                this.ExecuteAction(svc);
            }
            //------------------------------------------------------------------------------------------------------

            HttpResponseMessage response = new HttpResponseMessage(System.Net.HttpStatusCode.PartialContent);

            return(Task.FromResult(response));
        }
예제 #11
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))
                                           )));
            }
        }
예제 #12
0
파일: Get.cs 프로젝트: lnunezp/API_Net-Gale
        /// 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);
            }
        }
예제 #13
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));
                //----------------------------------------------------------------------------------------------------
            }
        }
예제 #14
0
파일: Get.cs 프로젝트: lnunezp/API_Net-Gale
        /// 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);
            }
        }
예제 #15
0
        public override Task <System.Net.Http.HttpResponseMessage> ExecuteAsync(string token, System.Threading.CancellationToken cancellationToken)
        {
            Gale.Exception.RestException.Guard(() => token == null, "BODY_EMPTY", API.Resources.Errors.ResourceManager);


            using (Gale.Db.DataService svc = new Gale.Db.DataService("PA_DEL_CLIENTE"))
            {
                svc.Parameters.Add("Token", token);

                this.ExecuteAction(svc);
            }

            HttpResponseMessage response = new HttpResponseMessage(System.Net.HttpStatusCode.OK);

            return(Task.FromResult(response));
        }
예제 #16
0
파일: Put.cs 프로젝트: lnunezp/API_Net-Gale
        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_SGR_MOD_Contratos"))
            {
                svc.Parameters.Add("token", this.Model.token);
                svc.Parameters.Add("tokenNivel", this.Model.tokenNivelOrranizacional);
                svc.Parameters.Add("tokenEmpresa", this.Model.tokenEmpresa);
                svc.Parameters.Add("nombre", this.Model.nombre);
                svc.Parameters.Add("descripcion", this.Model.descripcion);
                svc.Parameters.Add("codigoContrato", this.Model.codigo);

                this.ExecuteScalar(svc);

                return(Task.FromResult(new HttpResponseMessage(System.Net.HttpStatusCode.OK)));
            }
        }
예제 #17
0
        /// <summary>
        /// Save Files into DB
        /// </summary>
        /// <param name="files"></param>
        /// <returns></returns>
        public override System.Net.Http.HttpResponseMessage SaveFiles(List<System.Net.Http.HttpContent> files)
        {

            List<Object> _files = new List<object>();

            foreach (HttpContent file in files)
            {
                // You would get hold of the inner memory stream here
                System.IO.Stream stream = file.ReadAsStreamAsync().Result;

                using (Gale.Db.DataService svc = new Gale.Db.DataService("PA_MAE_INS_Archivo"))
                {
                    string name = file.Headers.ContentDisposition.FileName.Replace("\"", "");

                    svc.Parameters.Add("ARCH_Nombre", name);
                    svc.Parameters.Add("ARCH_Tamano", file.Headers.ContentLength);
                    svc.Parameters.Add("ARCH_ContentType", file.Headers.ContentType.MediaType);
                    svc.Parameters.Add("ARCH_Temporal", 1);
                    svc.Parameters.Add("ARCH_Binario", stream);
                    svc.Parameters.Add("ENTI_Token", _userID);

                    System.Guid token = (System.Guid)this.ExecuteScalar(svc);

                    _files.Add(new
                    {
                        token = token,
                        name = name,
                        length = file.Headers.ContentLength,
                        md5 = Gale.Security.Cryptography.MD5.GenerateHash(stream),
                        contentType = file.Headers.ContentType.MediaType,
                        createdAt = DateTime.Now.ToString("s")
                    });
                }

            }

            //----------------------------------------------------------------------------
            return new HttpResponseMessage(System.Net.HttpStatusCode.OK)
            {
                Content = new ObjectContent<Object>(
                    _files,
                    System.Web.Http.GlobalConfiguration.Configuration.Formatters.JsonFormatter
                )
            };
            //----------------------------------------------------------------------------
        }
예제 #18
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);
                //----------------------------------------------------------------------------------------------------

            }
        }
예제 #19
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_UPD_MarcarNotificacionesComoLeidas]"))
            {
                svc.Parameters.Add("USUA_Token", this.Model);
                svc.Parameters.Add("MarcaTiempo", _timestamp);

                this.ExecuteAction(svc);

                //----------------------------------------------------------------------------------------------------
                //Create Response
                var response = new HttpResponseMessage(System.Net.HttpStatusCode.PartialContent);

                //Return Task
                return(Task.FromResult(response));
                //----------------------------------------------------------------------------------------------------
            }
        }
예제 #20
0
        /// <summary>
        /// Async Process
        /// </summary>
        /// <param name="token"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override Task <HttpResponseMessage> ExecuteAsync(string token, System.Threading.CancellationToken cancellationToken)
        {
            using (Gale.Db.DataService svc = new Gale.Db.DataService("[PA_MOT_ELM_MeGustaRuta]"))
            {
                svc.Parameters.Add("ENTI_Token", token);
                svc.Parameters.Add("RUTA_Token", this.Model);

                this.ExecuteAction(svc);

                //----------------------------------------------------------------------------------------------------
                //Create Response
                var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK);

                //Return Task
                return(Task.FromResult(response));
                //----------------------------------------------------------------------------------------------------
            }
        }
예제 #21
0
        /// <summary>
        /// Save Files into DB
        /// </summary>
        /// <param name="files"></param>
        /// <returns></returns>
        public override System.Net.Http.HttpResponseMessage SaveFiles(List <System.Net.Http.HttpContent> files)
        {
            List <Object> _files = new List <object>();

            foreach (HttpContent file in files)
            {
                // You would get hold of the inner memory stream here
                System.IO.Stream stream = file.ReadAsStreamAsync().Result;

                using (Gale.Db.DataService svc = new Gale.Db.DataService("PA_MAE_INS_Archivo"))
                {
                    string name = file.Headers.ContentDisposition.FileName.Replace("\"", "");

                    svc.Parameters.Add("ARCH_Nombre", name);
                    svc.Parameters.Add("ARCH_Tamano", file.Headers.ContentLength);
                    svc.Parameters.Add("ARCH_ContentType", file.Headers.ContentType.MediaType);
                    svc.Parameters.Add("ARCH_Temporal", 1);
                    svc.Parameters.Add("ARCH_Binario", stream);
                    svc.Parameters.Add("ENTI_Token", _userID);

                    System.Guid token = (System.Guid) this.ExecuteScalar(svc);

                    _files.Add(new
                    {
                        token       = token,
                        name        = name,
                        length      = file.Headers.ContentLength,
                        md5         = Gale.Security.Cryptography.MD5.GenerateHash(stream),
                        contentType = file.Headers.ContentType.MediaType,
                        createdAt   = DateTime.Now.ToString("s")
                    });
                }
            }

            //----------------------------------------------------------------------------
            return(new HttpResponseMessage(System.Net.HttpStatusCode.OK)
            {
                Content = new ObjectContent <Object>(
                    _files,
                    System.Web.Http.GlobalConfiguration.Configuration.Formatters.JsonFormatter
                    )
            });
            //----------------------------------------------------------------------------
        }
예제 #22
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));
                //----------------------------------------------------------------------------------------------------
            }
        }
예제 #23
0
        public override Task<HttpResponseMessage> ExecuteAsync(string token, CancellationToken cancellationToken)
        {
            //------------------------------------------------
            // Guard's
            Gale.Exception.RestException.Guard(() => token == null, "EMPTY_EVENT", API.Errors.ResourceManager);
            Gale.Exception.RestException.Guard(() => String.IsNullOrEmpty(_user), "EMPTY_USER", API.Errors.ResourceManager);

            using (var svc = new Gale.Db.DataService("SP_DEL_LeftEvent"))
            {
                svc.Parameters.Add("USR_Token", _user);
                svc.Parameters.Add("EVN_Token", token);

                this.ExecuteAction(svc);

                return Task.FromResult(new HttpResponseMessage()
                {
                    StatusCode = System.Net.HttpStatusCode.OK
                });
            }
        }
예제 #24
0
        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_INS_ANTECEDENTES_CASO"))
            {
                var token = Guid.NewGuid();

                svc.Parameters.Add("DESCRIPCION", this.Model.DESCRIPTION);
                svc.Parameters.Add("TOKEN", this.Model.CASETOKEN);

                token = (Guid)this.ExecuteScalar(svc);
                return(Task.FromResult(new HttpResponseMessage()
                {
                    Content = new ObjectContent <Object>(new
                    {
                        token = token
                    },
                                                         System.Web.Http.GlobalConfiguration.Configuration.Formatters.JsonFormatter),
                    StatusCode = System.Net.HttpStatusCode.Created
                }));
            }
        }
예제 #25
0
        /// <summary>
        /// Async Process
        /// </summary>
        /// <param name="token">Route to Share</param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override Task <HttpResponseMessage> ExecuteAsync(string token, System.Threading.CancellationToken cancellationToken)
        {
            //------------------------------------------------------------------------------------------------------
            // GUARD EXCEPTIONS
            Gale.Exception.RestException.Guard(() => Model == null, "BODY_EMPTY", API.Errors.ResourceManager);
            Gale.Exception.RestException.Guard(() => Model.name == null, "EMPTY_NAME", API.Errors.ResourceManager);
            //------------------------------------------------------------------------------------------------------

            //------------------------------------------------------------------------------------------------------
            // DB Execution
            try
            {
                using (Gale.Db.DataService svc = new Gale.Db.DataService("PA_MOT_UPD_CompartirRuta"))
                {
                    svc.Parameters.Add("ENTI_Token", HttpContext.Current.User.PrimarySid());
                    svc.Parameters.Add("RUTA_Token", token);

                    svc.Parameters.Add("RUCO_Nombre", Model.name);
                    svc.Parameters.Add("RUCO_Observaciones", Model.observation);

                    this.ExecuteAction(svc);
                }
            }
            catch (Gale.Exception.SqlClient.CustomDatabaseException ex)
            {
                //50001 ROUTE_DONT_EXISTS
                throw new Gale.Exception.RestException(ex.Message, null);
            }
            catch
            {
                throw new Gale.Exception.RestException("CANT_SHARE_ROUTE", null);
            }
            //------------------------------------------------------------------------------------------------------

            HttpResponseMessage response = new HttpResponseMessage(System.Net.HttpStatusCode.PartialContent);

            return(Task.FromResult(response));
        }
예제 #26
0
        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_SGR_INS_Contratos"))
            {
                var token = Guid.NewGuid();

                svc.Parameters.Add("tokenNivel", this.Model.tokenNivelOrranizacional);
                svc.Parameters.Add("tokenEmpresa", this.Model.tokenEmpresa);
                svc.Parameters.Add("nombre", this.Model.nombre);
                svc.Parameters.Add("descripcion", this.Model.descripcion);
                svc.Parameters.Add("codigoContrato", this.Model.codigo);
                token = (Guid)this.ExecuteScalar(svc);
                return(Task.FromResult(new HttpResponseMessage()
                {
                    Content = new ObjectContent <Object>(new
                    {
                        token = token
                    },
                                                         System.Web.Http.GlobalConfiguration.Configuration.Formatters.JsonFormatter),
                    StatusCode = System.Net.HttpStatusCode.Created
                }));
            }
        }
예제 #27
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(() => Model == null, "BODY_EMPTY", API.Errors.ResourceManager);
            Gale.Exception.RestException.Guard(() => Model.photo == null, "IMAGE_EMPTY", API.Errors.ResourceManager);
            //------------------------------------------------------------------------------------------------------

            System.Guid imageToken = System.Guid.Empty;
            byte[]      data       = System.Convert.FromBase64String(Model.photo);

            //------------------------------------------------------------------------------------------------------
            // DB Execution
            using (Gale.Db.DataService svc = new Gale.Db.DataService("PA_MOT_INS_ImagenRuta"))
            {
                svc.Parameters.Add("ENTI_Token", HttpContext.Current.User.PrimarySid());
                svc.Parameters.Add("RUTA_Token", _route);
                svc.Parameters.Add("ARCH_Binario", data);
                svc.Parameters.Add("ARCH_Tamano", data.Length);

                imageToken = (System.Guid) this.ExecuteScalar(svc);
            }

            //------------------------------------------------------------------------------------------------------
            HttpResponseMessage response = new HttpResponseMessage(System.Net.HttpStatusCode.Created)
            {
                Content = new ObjectContent <Object>(
                    new
                {
                    token = imageToken
                },
                    System.Web.Http.GlobalConfiguration.Configuration.Formatters.JsonFormatter
                    )
            };

            return(Task.FromResult(response));
        }
예제 #28
0
파일: View.cs 프로젝트: dmunozgaete/MotoApp
        /// <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);
            }
            //------------------------------------------------------------------------------------------------------

        }
예제 #29
0
 public Gale.Db.EntityRepository ExecuteQuery(Gale.Db.DataService Service, int CommandTimeout)
 {
     return(Connection.ExecuteQuery(Service, CommandTimeout));
 }
예제 #30
0
        public override Task <HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken)
        {
            Gale.Exception.GaleException.Guard(() => this.modelType == null, System.Net.HttpStatusCode.BadRequest, "API_EMPTY_BODY");

            SortedDictionary <string, object> values = new SortedDictionary <string, object>();
            var table_name = this.modelType.Name;

            #region BIND DATA
            var fieldProperties = typeof(TModel).GetProperties().Where(prop => Attribute.IsDefined(prop, typeof(System.Data.Linq.Mapping.ColumnAttribute))).ToList();
            foreach (System.Reflection.PropertyInfo property in fieldProperties)
            {
                string db_name = property.Name;
                object value   = null;

                if (property.GetValue(_payload) == null)
                {
                    continue;
                }

                var attr = property.TryGetAttribute <System.Data.Linq.Mapping.ColumnAttribute>();
                if (attr != null)
                {
                    System.Data.Linq.Mapping.ColumnAttribute column_attr = (attr as System.Data.Linq.Mapping.ColumnAttribute);
                    if (column_attr != null && column_attr.Name != null && column_attr.Name.Length > 0)
                    {
                        db_name = column_attr.Name;
                    }
                }

                try
                {
                    value = property.GetValue(_payload);
                }
                catch /*(System.Reflection.TargetInvocationException ex)*/
                {
                    throw new Gale.Exception.GaleException("API_CANT_SETVALUE", property.Name, table_name);
                }

                //Add as Data Value
                values.Add(db_name, value);
            }
            #endregion

            var table_attr = this.modelType.TryGetAttribute <System.Data.Linq.Mapping.TableAttribute>();
            if (table_attr != null && table_attr.Name != null && table_attr.Name.Length > 0)
            {
                table_name = table_attr.Name;
            }

            #region SQL Builder

            /*
             *
             *  BEGIN
             *      DECLARE @TABLE_NAME VARCHAR(200) = '{TABLE}';
             *      DECLARE @OBJECT_ID INT = (SELECT object_id FROM sys.all_objects WHERE type_desc = 'USER_TABLE' AND name = @TABLE_NAME);
             *      DECLARE @COUNT INT= (SELECT COUNT(*) FROM sys.identity_columns WHERE object_id = @OBJECT_ID);
             *
             *      INSERT INTO TABLE (
             *          {FIELD}
             *      ) VALUES (
             *          {VALUE}
             *      );
             *
             *      IF(@COUNT = 1)
             *              BEGIN
             *                      DECLARE @IDENTITY_COLUMN SYSNAME;
             *                      SELECT TOP 1
             *                              @IDENTITY_COLUMN = name
             *                      FROM
             *                              sys.identity_columns WHERE object_id = @OBJECT_ID;
             *
             *                      DECLARE @GETLASTROWINSERTED NVARCHAR(4000) = 'SELECT ' + @TABLE_NAME + '.* FROM ' + @TABLE_NAME + ' WHERE ' + @IDENTITY_COLUMN + ' = ' + CONVERT(VARCHAR(200), SCOPE_IDENTITY());
             *                      EXECUTE sp_executesql @GETLASTROWINSERTED;
             *              END
             *      ELSE
             *              RAISERROR ('MORE_THAN_ONE_PK',12,1);
             *
             *  END
             *
             *
             */


            System.Text.StringBuilder builder = new StringBuilder();
            builder.AppendFormat("INSERT INTO {0} ", table_name);
            builder.AppendFormat("( \n");
            bool isFirst = true;
            foreach (var value in values)
            {
                if (!isFirst)
                {
                    builder.Append(",");
                }
                builder.AppendFormat("{0} \n", value.Key);
                isFirst = false;
            }
            builder.Append(") VALUES ( \n");
            isFirst = true;
            foreach (var value in values)
            {
                if (!isFirst)
                {
                    builder.Append(",");
                }
                builder.AppendFormat("'{0}' \n", value.Value);
                isFirst = false;
            }
            builder.Append("); \n\n");

            string single_tableName = table_name.Substring(table_name.IndexOf(".") + 1);

            //GET COUNT FROM IDENTITY COLUMNS FOR A SPECIFIC TABLE
            builder.AppendFormat("SELECT \n");
            builder.AppendFormat("  COUNT(*) \n");
            builder.AppendFormat("FROM \n");
            builder.AppendFormat("  sys.identity_columns IDENT INNER JOIN \n");
            builder.AppendFormat("  sys.all_objects      TBLES ON IDENT.object_id = TBLES.object_id \n");
            builder.AppendFormat("  AND type_desc = 'USER_TABLE' \n");
            builder.AppendFormat("  AND TBLES.name = '{0}'; \n\n", single_tableName);

            //GET THE LAST INSERTED ROW (ONLY WORKS FOR A SINGLE PRIMARY KEY COLUMN)
            builder.AppendFormat("SELECT TOP 1 \n");
            builder.AppendFormat("  IDENT.name \n");
            builder.AppendFormat("FROM \n");
            builder.AppendFormat("  sys.identity_columns IDENT INNER JOIN \n");
            builder.AppendFormat("  sys.all_objects      TBLES ON IDENT.object_id = TBLES.object_id \n");
            builder.AppendFormat("  AND type_desc = 'USER_TABLE' \n");
            builder.AppendFormat("  AND TBLES.name = '{0}' ", single_tableName);

            string query = builder.ToString();
            #endregion

            //-------------------------------------------------------------------------------------
            //---[ DATABASE CALL
            using (Gale.Db.DataService svc = new Gale.Db.DataService(query))
            {
                try
                {
                    //Create the repository
                    this.ExecuteSql(svc);

                    HttpResponseMessage response = new HttpResponseMessage(System.Net.HttpStatusCode.Created)
                    {
                        Content = new StringContent("Created")
                    };

                    return(Task.FromResult(response));
                }
                catch (System.Exception ex)
                {
                    string message = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                    throw new Gale.Exception.GaleException("API_DB_ERROR", message);
                }
            }
            //-------------------------------------------------------------------------------------
        }
예제 #31
0
 public void ExecuteAction(Gale.Db.DataService Service)
 {
     Connection.ExecuteAction(Service);
 }
예제 #32
0
 public void ExecuteAction(Gale.Db.DataService Service, int CommandTimeout)
 {
     Connection.ExecuteAction(Service, CommandTimeout);
 }
예제 #33
0
        public override Task <HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken)
        {
            Gale.Exception.GaleException.Guard(() => _payload == null, System.Net.HttpStatusCode.BadRequest, "API_EMPTY_BODY");

            var table_type = typeof(TModel);

            SortedDictionary <string, object> values = new SortedDictionary <string, object>();
            string table_name      = table_type.Name;
            string primaryKey_name = null;

            #region BIND DATA
            var fieldProperties = typeof(TModel).GetProperties().Where(prop => Attribute.IsDefined(prop, typeof(System.Data.Linq.Mapping.ColumnAttribute))).ToList();
            foreach (System.Reflection.PropertyInfo property in fieldProperties)
            {
                string db_name = property.Name;
                object value   = null;

                var attr = property.TryGetAttribute <System.Data.Linq.Mapping.ColumnAttribute>();
                if (attr != null)
                {
                    System.Data.Linq.Mapping.ColumnAttribute column_attr = (attr as System.Data.Linq.Mapping.ColumnAttribute);
                    if (column_attr != null && column_attr.Name != null && column_attr.Name.Length > 0)
                    {
                        db_name = column_attr.Name;

                        if (column_attr.IsPrimaryKey)
                        {
                            primaryKey_name = db_name;
                            continue;
                        }
                    }
                }

                if (property.GetValue(_payload) == null)
                {
                    continue;
                }

                try
                {
                    value = property.GetValue(_payload);
                }
                catch /*(System.Reflection.TargetInvocationException ex)*/
                {
                    throw new Gale.Exception.GaleException("API_CANT_SETVALUE", property.Name, table_name);
                }

                //Add as Data Value
                values.Add(db_name, value);
            }
            #endregion

            var table_attr = table_type.TryGetAttribute <System.Data.Linq.Mapping.TableAttribute>();
            if (table_attr != null && table_attr.Name != null && table_attr.Name.Length > 0)
            {
                table_name = table_attr.Name;
            }

            #region SQL Builder
            System.Text.StringBuilder builder = new StringBuilder();
            builder.AppendFormat("UPDATE {0} ", table_name);
            builder.AppendFormat("  SET");
            bool isFirst = true;
            foreach (var value in values)
            {
                if (!isFirst)
                {
                    builder.Append(",");
                }
                builder.AppendFormat("  {0} = '{1}'", value.Key, value.Value.ToString());
                isFirst = false;
            }
            builder.AppendFormat("  WHERE");
            builder.AppendFormat("  {0} = '{1}'", primaryKey_name, this.id);


            string query = builder.ToString();
            #endregion

            //-------------------------------------------------------------------------------------
            //---[ DATABASE CALL
            using (Gale.Db.DataService svc = new Gale.Db.DataService(query))
            {
                try
                {
                    //Create the repository
                    this.ExecuteSql(svc);

                    HttpResponseMessage response = new HttpResponseMessage(System.Net.HttpStatusCode.PartialContent)
                    {
                        Content = new StringContent("Updated")
                    };

                    return(Task.FromResult(response));
                }
                catch (System.Exception ex)
                {
                    string message = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                    throw new Gale.Exception.GaleException("API_DB_ERROR", message);
                }
            }
            //-------------------------------------------------------------------------------------
        }
예제 #34
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);
            }
            //-------------------------------------------------------------------------------------
        }