public async Task<CategoryContract> PostAsync(string name)
{
try
{
_telemetryClient.TrackEvent("CategoryController PostAsync invoked");
await ValidateAndReturnCurrentUserId();
var sanitizedName = name.TrimAndReplaceMultipleWhitespaces().ToTitleCase();
return await _repository.CreateCategory(sanitizedName);
}
catch (DataLayerException ex)
{
_telemetryClient.TrackException(ex);
if (ex.Error == DataLayerError.Unknown)
{
throw ServiceExceptions.UnknownInternalFailureException(ServiceExceptions.Source);
}
if (ex.Error == DataLayerError.DuplicateKeyInsert)
{
throw ServiceExceptions.DuplicateCategoryException(ServiceExceptions.Source);
}
throw ServiceExceptions.DataLayerException(ex.Message);
}
}
}