public IHttpActionResult PutCapitulo(int id, CapituloWrapper Req)
        {
            if (!AdminValidator())
            {
                return(Unauthorized());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var capitulo = Req.Capitulo;

            capitulo.ID = id;
            var URLAlternativos = Req.urlAlternativos;

            db.UrlAlternativo.RemoveRange(db.UrlAlternativo.Where(x => x.CapituloID == id));
            if (URLAlternativos != null)
            {
                foreach (UrlAlternativo urlAlternativo in URLAlternativos)
                {
                    urlAlternativo.CapituloID = id;
                    db.UrlAlternativo.Add(urlAlternativo);
                }
            }


            db.Entry(capitulo).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CapituloExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            catch
            {
                return(InternalServerError());
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public IHttpActionResult PostCapitulo(CapituloWrapper Req)
        {
            if (!AdminValidator())
            {
                return(Unauthorized());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var capitulo = Req.Capitulo;

            try
            {
                var URLAlternativos = Req.urlAlternativos;

                db.Capitulo.Add(capitulo);
                db.SaveChanges();
                if (URLAlternativos != null)
                {
                    foreach (UrlAlternativo urlAlternativo in URLAlternativos)
                    {
                        urlAlternativo.CapituloID = capitulo.ID;
                        db.UrlAlternativo.Add(urlAlternativo);
                    }
                }


                db.SaveChanges();
            }
            catch
            {
                return(Conflict());
            }


            return(CreatedAtRoute("DefaultApi", new { id = capitulo.ID }, capitulo));
        }
        public ActionResult Guardar(CapituloCLS capitulo, List <UrlAlternativo> urlAlternativo)
        {
            Token token = HttpContext.Session["token"] as Token;

            if (token == null || token.ExpiresAt < DateTime.Now)
            {
                return(RedirectToAction("Index", "Authentication"));
            }
            var req = new CapituloWrapper();

            req.Capitulo        = capitulo;
            req.urlAlternativos = urlAlternativo;

            try
            {
                int ID = capitulo.ID ?? 0;

                HttpClient httpClient = new HttpClient();
                httpClient.BaseAddress = new Uri(baseURL);
                httpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);

                string      reqJson = JsonConvert.SerializeObject(req);
                HttpContent body    = new StringContent(reqJson, Encoding.UTF8, "application/json");

                if (ID == 0)
                {
                    HttpResponseMessage response = httpClient.PostAsync(basePath + "api/Capitulos", body).Result;
                    if (response.IsSuccessStatusCode)
                    {
                        return(Json(
                                   new
                        {
                            success = true,
                            message = "Capitulo creado satisfactoriamente"
                        }, JsonRequestBehavior.AllowGet));
                    }
                    else if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized)
                    {
                        return(RedirectToAction("Index", "Authentication"));
                    }
                }
                else
                {
                    HttpResponseMessage response = httpClient.PutAsync($"{basePath}api/Capitulos/{ID}", body).Result;
                    if (response.IsSuccessStatusCode)
                    {
                        return(Json(
                                   new
                        {
                            success = true,
                            message = "Capitulo modificado satisfactoriamente"
                        }, JsonRequestBehavior.AllowGet));
                    }
                }
                throw new Exception("Error desconocido al guardar capitulo");
            }
            catch (Exception e)
            {
                return(Json(
                           new
                {
                    success = false,
                    message = e.InnerException
                }, JsonRequestBehavior.AllowGet));
            }
        }