diff --git a/RMuseum/Controllers/GanjoorController.cs b/RMuseum/Controllers/GanjoorController.cs index 7ac8feee..dad1a8e3 100644 --- a/RMuseum/Controllers/GanjoorController.cs +++ b/RMuseum/Controllers/GanjoorController.cs @@ -103,6 +103,29 @@ namespace RMuseum.Controllers return Ok(res.Result); } + /// + /// cat by url + /// + /// + /// + /// + [HttpGet] + [Route("cat")] + [AllowAnonymous] + [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorPoetCompleteViewModel))] + [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] + [ProducesResponseType((int)HttpStatusCode.NotFound)] + public async Task GetCatByUrl(string url, bool poems = true) + { + RServiceResult res = + await _ganjoorService.GetCatByUrl(url, poems); + if (!string.IsNullOrEmpty(res.ExceptionString)) + return BadRequest(res.ExceptionString); + if (res.Result == null) + return NotFound(); + return Ok(res.Result); + } + /// /// get poem by id /// diff --git a/RMuseum/Services/IGanjoorService.cs b/RMuseum/Services/IGanjoorService.cs index a076cba3..d22de313 100644 --- a/RMuseum/Services/IGanjoorService.cs +++ b/RMuseum/Services/IGanjoorService.cs @@ -42,6 +42,14 @@ namespace RMuseum.Services /// Task> GetCatById(int id, bool poems = true); + /// + /// get cat by url + /// + /// + /// + /// + Task> GetCatByUrl(string url, bool poems = true); + /// /// Get Poem By Id diff --git a/RMuseum/Services/Implementation/GanjoorService.cs b/RMuseum/Services/Implementation/GanjoorService.cs index 135b889b..8299fc07 100644 --- a/RMuseum/Services/Implementation/GanjoorService.cs +++ b/RMuseum/Services/Implementation/GanjoorService.cs @@ -113,6 +113,32 @@ namespace RMuseum.Services.Implementation } } + /// + /// get cat by url + /// + /// + /// + /// + public async Task> GetCatByUrl(string url, bool poems = true) + { + try + { + // /hafez/ => /hafez : + if (url.LastIndexOf('/') == url.Length - 1) + { + url = url.Substring(0, url.Length - 1); + } + var cat = await _context.GanjoorCategories.Where(c => c.FullUrl == url).SingleOrDefaultAsync(); + if (cat == null) + return new RServiceResult(null); + return await GetCatById(cat.Id); + } + catch (Exception exp) + { + return new RServiceResult(null, exp.ToString()); + } + } + /// /// get cat by id ///