Skip to content

Commit

Permalink
Merge pull request #26 from galliumplus/fix/19
Browse files Browse the repository at this point in the history
Separation des exceptions dans le dossier Exceptions
  • Loading branch information
louisdevie authored Aug 30, 2023
2 parents 181f4be + f1a8c37 commit ca6e39b
Show file tree
Hide file tree
Showing 33 changed files with 187 additions and 106 deletions.
4 changes: 3 additions & 1 deletion Core/Data/IBasicDao.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace GalliumPlus.WebApi.Core.Data
using GalliumPlus.WebApi.Core.Exceptions;

namespace GalliumPlus.WebApi.Core.Data
{
/// <summary>
/// Opérations basiques (CRUD) d'accès aux données.
Expand Down
3 changes: 2 additions & 1 deletion Core/Data/IUserDao.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using GalliumPlus.WebApi.Core.Users;
using GalliumPlus.WebApi.Core.Exceptions;
using GalliumPlus.WebApi.Core.Users;

namespace GalliumPlus.WebApi.Core.Data
{
Expand Down
59 changes: 0 additions & 59 deletions Core/Exceptions.cs

This file was deleted.

17 changes: 17 additions & 0 deletions Core/Exceptions/CantSellException.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GalliumPlus.WebApi.Core.Exceptions
{
/// <summary>
/// Erreur indiquant une vente refusée.
/// </summary>
public class CantSellException : GalliumException
{
public override string ErrorCode => "CANT_SELL";
public CantSellException(string message) : base(message) { }
}
}
17 changes: 17 additions & 0 deletions Core/Exceptions/DuplicateItemException.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GalliumPlus.WebApi.Core.Exceptions
{
/// <summary>
/// Erreur indiquant qu'un élément existe déjà.
/// </summary>
public class DuplicateItemException : GalliumException
{
public override string ErrorCode => "DUPLICATE_ITEM";
public DuplicateItemException() : base("Cette ressource existe déjà.") { }
}
}
26 changes: 26 additions & 0 deletions Core/Exceptions/GalliumException.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GalliumPlus.WebApi.Core.Exceptions
{
public abstract class GalliumException : Exception
{
/// <summary>
/// Code de l'erreur levée
/// </summary>
public abstract string ErrorCode { get; }

/// <summary>
/// Constructeur par défaut
/// </summary>
public GalliumException() : base() { }
/// <summary>
/// Constructeur d'une GalliumException avec un message
/// </summary>
/// <param name="message">String decrivant la raison </param>
public GalliumException(string message) : base(message) { }
}
}
18 changes: 18 additions & 0 deletions Core/Exceptions/InvalidItemException.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GalliumPlus.WebApi.Core.Exceptions
{
/// <summary>
/// Erreur indiquant des données non valides.
/// </summary>
public class InvalidItemException : GalliumException
{
public override string ErrorCode => "INVALID_ITEM";
public InvalidItemException(string message) : base(message) { }

}
}
17 changes: 17 additions & 0 deletions Core/Exceptions/ItemNotFoundException.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GalliumPlus.WebApi.Core.Exceptions
{
/// <summary>
/// Erreur indiquant que la ressource demandée n'existe pas.
/// </summary>
public class ItemNotFoundException : GalliumException
{
public override string ErrorCode => "ITEM_NOT_FOUND";
public ItemNotFoundException() : base("La ressource demandée n'existe pas.") { }
}
}
33 changes: 33 additions & 0 deletions Core/Exceptions/PermissionDeniedException.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using GalliumPlus.WebApi.Core.Users;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GalliumPlus.WebApi.Core.Exceptions
{
/// <summary>
/// Erreur indiquant que l'utilisateur n'a pas les permissions suffisantes
/// pour effectuer une action.
/// </summary>
public class PermissionDeniedException : GalliumException
{
private Permissions required;

/// <summary>
/// Les permissions qu étaient requises.
/// </summary>
public Permissions Required { get => required; }

public override string ErrorCode => "PERMISSION_DENIED";
/// <summary>
/// Instancie l'exception.
/// </summary>
/// <param name="required">Les permissions requises pour effectuer l'action.</param>
public PermissionDeniedException(Permissions required) : base()
{
this.required = required;
}
}
}
1 change: 1 addition & 0 deletions Core/Orders/Order.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Exceptions;
using GalliumPlus.WebApi.Core.Users;
using System;
using System.Collections.Generic;
Expand Down
1 change: 1 addition & 0 deletions Core/Orders/OrderItem.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using GalliumPlus.WebApi.Core.Stocks;
using GalliumPlus.WebApi.Core.Exceptions;

namespace GalliumPlus.WebApi.Core.Orders
{
Expand Down
1 change: 1 addition & 0 deletions Core/Orders/PaymentByDeposit.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Exceptions;
using GalliumPlus.WebApi.Core.Users;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
Expand Down
1 change: 1 addition & 0 deletions Core/Orders/PaymentMethod.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using GalliumPlus.WebApi.Core.Exceptions;

namespace GalliumPlus.WebApi.Core.Orders
{
Expand Down
1 change: 1 addition & 0 deletions Core/Orders/PaymentMethodFactory.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Orders;
using GalliumPlus.WebApi.Core.Exceptions;
using GalliumPlus.WebApi.Core.Users;

namespace GalliumPlus.WebApi.Core.Orders
Expand Down
1 change: 1 addition & 0 deletions Core/Users/User.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
using GalliumPlus.WebApi.Core.Exceptions;

namespace GalliumPlus.WebApi.Core.Users
{
Expand Down
1 change: 1 addition & 0 deletions CoreTest/Orders/OrderItemTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using GalliumPlus.WebApi.Core.Exceptions;

namespace CoreTest.Orders
{
Expand Down
3 changes: 2 additions & 1 deletion CoreTest/Orders/OrderTest.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using GalliumPlus.WebApi.Core.Orders;
using GalliumPlus.WebApi.Core.Exceptions;
using GalliumPlus.WebApi.Core.Orders;

namespace CoreTest.Orders
{
Expand Down
4 changes: 3 additions & 1 deletion CoreTest/Orders/PaymentMethodFactoryTest.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace CoreTest.Orders
using GalliumPlus.WebApi.Core.Exceptions;

namespace CoreTest.Orders
{
public class PaymentMethodFactoryTest
{
Expand Down
3 changes: 2 additions & 1 deletion CoreTest/Orders/PaymentMethodTest.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using GalliumPlus.WebApi.Core.Orders;
using GalliumPlus.WebApi.Core.Exceptions;
using GalliumPlus.WebApi.Core.Orders;
using GalliumPlus.WebApi.Core.Users;

namespace CoreTest.Orders
Expand Down
1 change: 1 addition & 0 deletions CoreTest/Users/UserTest.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using GalliumPlus.WebApi.Core.Exceptions;

namespace CoreTest.Users
{
Expand Down
1 change: 1 addition & 0 deletions FakeDatabase/BaseDao.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using GalliumPlus.WebApi.Core;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Exceptions;

namespace GalliumPlus.WebApi.Data.FakeDatabase
{
Expand Down
1 change: 1 addition & 0 deletions FakeDatabase/ProductDao.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using GalliumPlus.WebApi.Core;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Stocks;
using GalliumPlus.WebApi.Core.Exceptions;
using System.Reflection;

namespace GalliumPlus.WebApi.Data.FakeDatabase
Expand Down
1 change: 1 addition & 0 deletions FakeDatabase/UserDao.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using GalliumPlus.WebApi.Core;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Users;
using GalliumPlus.WebApi.Core.Exceptions;

namespace GalliumPlus.WebApi.Data.FakeDatabase
{
Expand Down
4 changes: 2 additions & 2 deletions Service/Controllers/AccessController.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using GalliumPlus.WebApi.Core;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Exceptions;
using GalliumPlus.WebApi.Core.Users;
using GalliumPlus.WebApi.Dto;
using GalliumPlus.WebApi.Middleware.Authorization;
Expand Down
1 change: 1 addition & 0 deletions Service/Controllers/Controller.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using GalliumPlus.WebApi.Core;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Users;
using GalliumPlus.WebApi.Core.Exceptions;
using Microsoft.AspNetCore.Mvc;
using System.Text.Json;

Expand Down
4 changes: 2 additions & 2 deletions Service/Dto/OrderSummary.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using GalliumPlus.WebApi.Core;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Exceptions;
using GalliumPlus.WebApi.Core.Orders;
using GalliumPlus.WebApi.Core.Users;
using System.ComponentModel.DataAnnotations;
Expand Down
4 changes: 2 additions & 2 deletions Service/Dto/ProductSummary.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using GalliumPlus.WebApi.Core;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Exceptions;
using GalliumPlus.WebApi.Core.Stocks;
using GalliumPlus.WebApi.Core.Users;
using System.ComponentModel.DataAnnotations;
Expand Down
4 changes: 2 additions & 2 deletions Service/Dto/UserSummary.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using GalliumPlus.WebApi.Core;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Exceptions;
using GalliumPlus.WebApi.Core.Users;
using System.ComponentModel.DataAnnotations;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using GalliumPlus.WebApi.Core;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Exceptions;
using GalliumPlus.WebApi.Core.Users;
using Microsoft.AspNetCore.Authentication;
using Microsoft.Extensions.Options;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using GalliumPlus.WebApi.Core;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Data;
using GalliumPlus.WebApi.Core.Exceptions;
using GalliumPlus.WebApi.Core.Users;
using Microsoft.AspNetCore.Authentication;
using Microsoft.Extensions.Options;
Expand Down
16 changes: 14 additions & 2 deletions Service/Middleware/ErrorResult.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc;
using GalliumPlus.WebApi.Core.Exceptions;
using Microsoft.AspNetCore.Mvc;
using System.Text.Json.Serialization;

namespace GalliumPlus.WebApi.Middleware
Expand Down Expand Up @@ -34,7 +35,7 @@ private class Error
/// <param name="errorCode">Le code de l'erreur (voir <see cref="Error.Code"/>)</param>
/// <param name="errorMessage">Le message d'erreur (voir <see cref="Error.Message"/>)</param>
/// <param name="statusCode">Le statut HTTP de la réponse.</param>
/// <param name="data">Données additionnelles pour le déboguage</param>
/// <param name="errorData">Données additionnelles pour le déboguage</param>
/// <returns></returns>
public ErrorResult(
string errorCode,
Expand All @@ -46,5 +47,16 @@ public ErrorResult(
this.Value = new Error { Code = errorCode, Message = errorMessage, DebugInfo = errorData };
this.StatusCode = statusCode;
}

/// <summary>
/// Construit une réponse d'erreur à partir d'une GalliumException.
/// </summary>
/// <param name="exception">GalliumException sur laquelle l'erreur est basée</param>
/// <param name="statusCode">Le statut HTTP de la réponse.</param>
public ErrorResult(GalliumException exception, int statusCode) : base(null)
{
this.Value = new Error { Code = exception.ErrorCode, Message = exception.Message };
this.StatusCode = statusCode;
}
}
}
Loading

0 comments on commit ca6e39b

Please sign in to comment.