using AsbCloudApp.Data.User; using AsbCloudWebApi.Converters; using System; using System.Collections.Generic; using System.ComponentModel; using System.Security.Claims; namespace Microsoft.AspNetCore.Mvc { public static class Extentions { public static int? GetCompanyId(this ClaimsPrincipal user) { var claimIdCompany = user.FindFirst(nameof(UserDto.IdCompany)); if (claimIdCompany is null) return null; return int.TryParse(claimIdCompany.Value, out int uid) ? uid : null; } public static int? GetUserId(this ClaimsPrincipal user) { var userId = user.FindFirst(nameof(UserDto.Id)); if (userId is null) return null; return int.TryParse(userId.Value, out int uid) ? uid : null; } /// /// /// Returns BadRequest with ValidationProblemDetails as body /// /// /// Используйте этот метод только если валидацию нельзя сделать через /// атрибуты валидации или IValidatableObject модели. /// /// /// /// /// /// public static BadRequestObjectResult ValidationBadRequest(this ControllerBase controller, string paramName, string error) { var errors = new Dictionary { { paramName, new[]{ error } } }; var problem = new ValidationProblemDetails(errors); return controller.BadRequest(problem); } public static MvcOptions UseDateOnlyTimeOnlyStringConverters(this MvcOptions options) { TypeDescriptor.AddAttributes(typeof(DateOnly), new TypeConverterAttribute(typeof(DateOnlyTypeConverter))); return options; } } }