Skip to content

Instantly share code, notes, and snippets.

View lakshithacodes's full-sized avatar

Lakshitha Fernando lakshithacodes

View GitHub Profile
@lakshithacodes
lakshithacodes / CustomerController.cs
Created April 21, 2021 12:17
An endpoint to retrieve all customers
[HttpGet]
[Route("get-all")]
public async Task<List<AllCustomerQueryResponseModel>> GetAllCustomerAsync()
{
try
{
return await this.allCustomerQueryHandler.GetAllAsync();
}
catch
{
@lakshithacodes
lakshithacodes / AllCustomerQueryHandler.cs
Last active April 21, 2021 11:56
Implementation of abstract method
namespace CustomerManagement.Handlers.QueryHandler
{
public class AllCustomerQueryHandler : IAllCustomerQueryHandler
{
private readonly CustomerDbContext context;
public AllCustomerQueryHandler(CustomerDbContext context)
{
this.context = context;
}
@lakshithacodes
lakshithacodes / IAllCustomerQueryHandler.cs
Created April 21, 2021 11:44
Abstract method for IAllCustomerQueryHandler
namespace CustomerManagement.Contracts.QueryHandlers
{
public interface IAllCustomerQueryHandler
{
Task<List<AllCustomerQueryResponseModel>> GetAllAsync();
}
}
@lakshithacodes
lakshithacodes / AllCustomerQueryResponseModel.cs
Created April 21, 2021 11:38
Query response model for all customers
namespace CustomerManagement.ResponseModels.QueryResponses
{
public class AllCustomerQueryResponseModel
{
public int Id { get; set; }
public string Title { get; set; }
public string Name { get; set; }
public string City { get; set; }
public int LoyaltyPoints { get; set; }
}
@lakshithacodes
lakshithacodes / CustomerController.cs
Created April 20, 2021 13:27
Add CustomerController and an save-customer endpoint
namespace CustomerManagement.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class CustomerController : ControllerBase
{
private readonly ISaveCustomerCommandHandler saveCustomerCommandHandler;
public CustomerController(ISaveCustomerCommandHandler saveCustomerCommandHandler)
{
this.saveCustomerCommandHandler = saveCustomerCommandHandler;
@lakshithacodes
lakshithacodes / SaveCustomerCommandHandler.cs
Created April 20, 2021 13:08
Implementing abstract handler method
using CustomerManagement.Contracts.CommandHandlers;
using CustomerManagement.Data;
using CustomerManagement.Models;
using CustomerManagement.RequestModels.CommandRequests;
using System.Threading.Tasks;
namespace CustomerManagement.Handlers.CommandHandlers
{
public class SaveCustomerCommandHandler : ISaveCustomerCommandHandler
{
@lakshithacodes
lakshithacodes / ISaveCustomerCommandHandler.cs
Last active April 20, 2021 12:12
Abstract method to save command handler
namespace CustomerManagement.Contracts.CommandHandlers
{
public interface ISaveCustomerCommandHandler
{
Task<int> SaveAsync(SaveCustomerRequestModel saveCustomerRequestModel);
}
}
@lakshithacodes
lakshithacodes / SaveCustomerRequestModel.cs
Created April 16, 2021 12:38
SaveCustomerRequestModel - CQRS with mediatR
namespace CustomerManagement.RequestModels.CommandRequests
{
public class SaveCustomerRequestModel
{
public string Title { get; set; }
public string Name { get; set; }
public string City { get; set; }
public int LoyaltyPoints { get; set; }
}
}
@lakshithacodes
lakshithacodes / CustomerDbContext.cs
Created April 16, 2021 11:13
CustomerDbContext- CQRS with mediatR
using CustomerManagement.Models;
using Microsoft.EntityFrameworkCore;
namespace CustomerManagement.Data
{
public class CustomerDbContext : DbContext
{
public CustomerDbContext(DbContextOptions<CustomerDbContext> options) : base(options)
{ }
@lakshithacodes
lakshithacodes / PersonalDetails.cs
Last active April 16, 2021 11:38
Model creation - CQRS with mediatR
public class PersonalDetails
{
public int Id { get; set; }
public string Title { get; set; }
public string Name { get; set; }
public string City { get; set; }
public int LoyaltyPoints { get; set; }
}