< Summary

Class:SVETA.Api.Controllers.DiscountColorController
Assembly:SVETA.Api
File(s):/opt/dev/sveta_api_build/SVETA.Api/Controllers/DiscountColorController.cs
Covered lines:0
Uncovered lines:61
Coverable lines:61
Total lines:190
Line coverage:0% (0 of 61)
Covered branches:0
Total branches:14
Branch coverage:0% (0 of 14)

Metrics

MethodLine coverage Branch coverage
.ctor(...)0%100%
GetDiscountColors()0%0%
GetDiscountColorsCount()0%100%
GetDiscountColor()0%100%
CreateDiscount()0%0%
UpdateDiscount()0%0%
DeleteDiscountColor()0%100%
GetColor()0%100%

File(s)

/opt/dev/sveta_api_build/SVETA.Api/Controllers/DiscountColorController.cs

#LineLine coverage
 1using WinSolutions.Sveta.Common.Extensions;
 2using System;
 3using System.Collections.Generic;
 4using System.Linq;
 5using System.Threading.Tasks;
 6using Microsoft.AspNetCore.Mvc;
 7using Microsoft.Extensions.Logging;
 8using WinSolutions.Sveta.Server.Data.DataModel.Entities;
 9using Microsoft.AspNetCore.Authorization;
 10using SVETA.Api.Data.Domain;
 11using WinSolutions.Sveta.Server.Services.Interfaces;
 12using SVETA.Api.Data.DTO.DiscountColorDTO;
 13using SVETA.Api.Data.DTO;
 14using SVETA.Api.Helpers.Authorize;
 15using WinSolutions.Sveta.Server.Data.DataModel.Kinds;
 16using Swashbuckle.AspNetCore.Annotations;
 17using WinSolutions.Sveta.Server.Domain;
 18using WinSolutions.Sveta.Common;
 19
 20
 21namespace SVETA.Api.Controllers
 22{
 23    [Authorize]
 24    [Route("api/v1/DiscountColor")]
 25    [ApiController]
 26    public class DiscountColorController : SvetaController
 27    {
 28        const string _routeUrl = "api/v1/DiscountColor";
 29        readonly IDiscountColorService _service;
 30        readonly IAuthenticationService _authUserService;
 31        readonly ILogger<DiscountColorController> _logger;
 032        public DiscountColorController(IDiscountColorService service, IAuthenticationService authUserService, ILogger<Di
 033        {
 034            _service = service;
 035            _authUserService = authUserService;
 036            _logger = logger;
 037        }
 38
 39        /// <summary>
 40        /// Возвращает все уровни скидок и цвета для них
 41        /// </summary>
 42        /// <remarks>author i.rebenok</remarks>
 43        /// <param name="page">Любое значение ниже нуля изменится на 1, пагинация: номер страницы</param>
 44        /// <param name="limit">Любое значение ниже нуля изменится на 10, пагинация: размер страницы</param>
 45        /// <param name="sort">сортировка по одному из полей
 46        /// по discount|desc, color,color|desc. Сортировка по умолчанию по discount</param>
 47        /// <param name="filter">Поиск по скидке, hex значению цвета или уровню прозрачности</param>
 48        [HttpGet("")]
 49        [SwaggerResponse(200, "Успешно", typeof(BaseResponseDTO<DiscountColorResponseDTO>))]
 50        [SwaggerResponse(500, "Ошибка на стороне сервера", typeof(ErrorDTO))]
 51        [SwaggerResponse(403, "Не разрешено для этого пользователя", typeof(ErrorDTO))]
 52        [Authorize(Roles = Role.SystemAdmin + "," + Role.SystemOperator)]
 53        public async Task<IActionResult> GetDiscountColors(int page = 1, int limit = 10, string sort = default, string f
 054        {
 055            filter = filter.NormalizeName();
 056            page = page < 1 ? 1 : page;
 057            limit = limit < 1 ? 10 : limit;
 058            var result = await _service.GetDiscountColors(page - 1, limit, sort, filter);
 059            var param = $"sort={sort}";
 060            var response = new BaseResponseDTO<DiscountColorResponseDTO>(_routeUrl, page, limit, result.TotalFilteredCou
 061            {
 062                Data = result.Result.Select(x => new DiscountColorResponseDTO(x)).ToList(),
 063            };
 064            return Ok(response);
 065        }
 66
 67        /// <summary>
 68        /// Возвращает количество записей
 69        /// </summary>
 70        /// <remarks>author i.rebenok</remarks>
 71        /// <param name="sort">сортировка по одному из полей
 72        /// по discount|desc, color,color|desc. Сортировка по умолчанию по discount</param>
 73        /// <param name="filter">Поиск по скидке или hex значению цвета</param>
 74        [HttpGet("Count")]
 75        [SwaggerResponse(200, "Успешно", typeof(CountDTO))]
 76        [SwaggerResponse(500, "Ошибка на стороне сервера", typeof(ErrorDTO))]
 77        [SwaggerResponse(403, "Не разрешено для этого пользователя", typeof(ErrorDTO))]
 78        [Authorize(Roles = Role.SystemAdmin + "," + Role.SystemOperator)]
 79        public async Task<IActionResult> GetDiscountColorsCount(string sort = default, string filter = null)
 080        {
 081            filter = filter.NormalizeName();
 082            int result = await Task.FromResult(_service.GetDiscountColors(1, 1, sort, filter).Result.TotalFilteredCount)
 083            return Ok(new CountDTO(result));
 084        }
 85
 86        /// <summary>
 87        /// Возвращает уровень скидки и цвет по id
 88        /// </summary>
 89        /// <remarks>author i.rebenok</remarks>
 90        /// <param name="id">Идентификатор записи в БД</param>
 91        [HttpGet("{id}")]
 92        [SwaggerResponse(200, "Успешно", typeof(IEnumerable<DiscountColorResponseDTO>))]
 93        [SwaggerResponse(500, "Ошибка на стороне сервера", typeof(ErrorDTO))]
 94        [SwaggerResponse(403, "Не разрешено для этого пользователя", typeof(ErrorDTO))]
 95        [Authorize(Roles = Role.SystemAdmin + "," + Role.SystemOperator)]
 96        public async Task<IActionResult> GetDiscountColor([SwaggerParameter(Required = true)] long id)
 097        {
 098            var result = await _service.GetDiscountColor(id);
 099            return Ok(new DiscountColorResponseDTO(result));
 0100        }
 101
 102        /// <summary>
 103        /// Создает записи со скидкой и цветом
 104        /// </summary>
 105        /// <remarks>author i.rebenok</remarks>
 106        /// <param name="data">DiscountColorRequestDTO</param>
 107        [HttpPost("")]
 108        [SwaggerResponse(201, "Успешно создано", typeof(DiscountColorResponseDTO))]
 109        [SwaggerResponse(404, "Нет записей", typeof(ErrorDTO))]
 110        [SwaggerResponse(500, "Ошибка на стороне сервера", typeof(ErrorDTO))]
 111        [SwaggerResponse(400, "Некорректные входные данные", typeof(ErrorDTO))]
 112        [SwaggerResponse(403, "Не разрешено для этого пользователя", typeof(ErrorDTO))]
 113        [Authorize(Roles = Role.SystemAdmin)]
 114        public async Task<IActionResult> CreateDiscount([FromBody] [SwaggerParameter(Required = true)] DiscountColorRequ
 0115        {
 0116            if (!ModelState.IsValid)
 0117                return BadRequestResult("Некорректные входные данные");
 0118            var discount = new DiscountColor()
 0119            {
 0120                DiscountLevel = data.DiscountLevel,
 0121                LabelColor = data.Color,
 0122                TextColor = data.TextColor,
 0123                Transparency = data.Transparency
 0124            };
 0125            await _service.Create(discount);
 0126            return CreatedAtAction("GetDiscountColor", new { id = discount.Id }, new DiscountColorResponseDTO(discount))
 0127        }
 128
 129        /// <summary>
 130        /// Обновляет скидку и цвет
 131        /// </summary>
 132        /// <remarks>author i.rebenok</remarks>
 133        /// <param name="id">id записи</param>
 134        /// <param name="data">DiscountColorRequestDTO</param>
 135        [HttpPut("{id}")]
 136        [SwaggerResponse(200, "Успешно обновлено", typeof(DiscountColorResponseDTO))]
 137        [SwaggerResponse(404, "Нет записей", typeof(ErrorDTO))]
 138        [SwaggerResponse(500, "Ошибка на стороне сервера", typeof(ErrorDTO))]
 139        [SwaggerResponse(400, "Некорректные входные данные", typeof(ErrorDTO))]
 140        [SwaggerResponse(403, "Не разрешено для этого пользователя", typeof(ErrorDTO))]
 141        [Authorize(Roles = Role.SystemAdmin)]
 142        public async Task<IActionResult> UpdateDiscount([SwaggerParameter(Required = true)] long id, [FromBody] [Swagger
 0143        {
 0144            if (!ModelState.IsValid)
 0145                return BadRequestResult("Некорректные входные данные");
 0146            var discount = await _service.GetDiscountColor(id);
 0147            if (discount == null)
 0148                return NotFoundResult($"Скидка с id={id} не найдена");
 0149            discount.LabelColor = data.Color;
 0150            discount.TextColor = data.TextColor;
 0151            discount.DiscountLevel = data.DiscountLevel;
 0152            discount.Transparency = data.Transparency;
 0153            await _service.Update(discount);
 0154            return Ok(new DiscountColorResponseDTO(discount));
 0155        }
 156
 157        /// <summary>
 158        /// Удаляет скидку и цвет
 159        /// </summary>
 160        /// <remarks>author i.rebenok</remarks>
 161        /// <param name="id">id записи</param>
 162        [HttpDelete("{id}")]
 163        [SwaggerResponse(200, "Успешно удалено", typeof(EmptyResult))]
 164        [SwaggerResponse(404, "Нет записей", typeof(ErrorDTO))]
 165        [SwaggerResponse(500, "Ошибка на стороне сервера", typeof(ErrorDTO))]
 166        [SwaggerResponse(403, "Не разрешено для этого пользователя", typeof(ErrorDTO))]
 167        [Authorize(Roles = Role.SystemAdmin)]
 168        public async Task<IActionResult> DeleteDiscountColor([SwaggerParameter(Required = true)] long id)
 0169        {
 0170            await _service.Delete(id);
 0171            return Ok();
 0172        }
 173
 174        /// <summary>
 175        /// Возвращает соответствующий цвет для заданной скидки
 176        /// </summary>
 177        /// <remarks>author i.rebenok</remarks>
 178        /// <param name="discount">скидка</param>
 179        [HttpGet("Color")]
 180        [SwaggerResponse(200, "Успешно", typeof(DiscountColorResponseDTO))]
 181        [SwaggerResponse(500, "Ошибка на стороне сервера", typeof(ErrorDTO))]
 182        [SwaggerResponse(403, "Не разрешено для этого пользователя", typeof(ErrorDTO))]
 183        [Authorize(Roles = Role.SystemAdmin + "," + Role.SystemOperator)]
 184        public async Task<IActionResult> GetColor([SwaggerParameter(Required = true)] int discount)
 0185        {
 0186            var result = await _service.GetColor(discount);
 0187            return Ok(new DiscountColorResponseDTO(result));
 0188        }
 189    }
 190}