Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/ps 28 inscription #2

Merged
merged 27 commits into from
Jan 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
3694afb
Basic models
JonathanDuvalV Jan 16, 2024
581de2c
Fix ORM data
MysticFragilist Jan 16, 2024
00a8fd5
Missing constructor et publications
JonathanDuvalV Jan 16, 2024
d161c3b
Merge branch 'main' into feature/supabase-efcore
MysticFragilist Jan 22, 2024
1f7aff6
fix after merge
MysticFragilist Jan 22, 2024
565a217
Added UserProfiles
JonathanDuvalV Jan 22, 2024
68b4cac
Scaffold entities from supabase
JonathanDuvalV Jan 22, 2024
11caad8
Fix merge?
JonathanDuvalV Jan 22, 2024
2821af0
Fix namespace
JonathanDuvalV Jan 22, 2024
c6a982a
Fix project ref
JonathanDuvalV Jan 22, 2024
b3f50e0
Refactor namespace
JonathanDuvalV Jan 22, 2024
33924dc
Fix migration namespaces
JonathanDuvalV Jan 22, 2024
d4ee4bb
Rename namespace in designer
JonathanDuvalV Jan 22, 2024
878b733
Merge branch 'main' into feature/supabase-efcore
JonathanDuvalV Jan 23, 2024
c8eb338
Interfaces
JonathanDuvalV Jan 23, 2024
e5748de
rename
JonathanDuvalV Jan 23, 2024
dbc91e3
rerename
JonathanDuvalV Jan 23, 2024
eaedc9f
Merge branch 'feature/supabase-efcore' into feature/ps-28-inscription
JonathanDuvalV Jan 23, 2024
2ca5c68
Merge branch 'main' into feature/supabase-efcore
JonathanDuvalV Jan 23, 2024
6521d4e
Swagger auth
JonathanDuvalV Jan 23, 2024
2a59ced
Merge branch 'feature/supabase-efcore' into feature/ps-28-inscription
JonathanDuvalV Jan 23, 2024
da71cf9
Endpoint to create an organizer
JonathanDuvalV Jan 23, 2024
3bd629b
Moderator/Oganizer id type to uuid
JonathanDuvalV Jan 23, 2024
5c94d85
Merge branch 'feature/supabase-efcore' into feature/ps-28-inscription
JonathanDuvalV Jan 23, 2024
5421b0e
Fix types
JonathanDuvalV Jan 23, 2024
5e6462c
Protect route
JonathanDuvalV Jan 23, 2024
86b9de3
Merge branch 'main' into feature/ps-28-inscription
JonathanDuvalV Jan 27, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions core/Controllers/UserController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using api.core.Data.requests;
using api.core.Data.Responses;
using api.core.services.abstractions;

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

namespace api.core.controllers;

[Authorize]
[ApiController]
[Route("api/user")]
public class UserController(IOrganizerService service) : ControllerBase
{
[HttpPost("organizer")]
public ActionResult<OrganizerResponseDTO> CreateOrganizer([FromBody] OrganizerCreationRequestDTO organizer)
{
var created = service.AddOrganizer(organizer);
return Ok(created);
}
}
14 changes: 14 additions & 0 deletions core/Data/Requests/OrganizerCreationRequestDTO.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
namespace api.core.Data.requests;

public class OrganizerCreationRequestDTO
{
public Guid Id { get; set; }

public string Name { get; set; } = null!;

public string Email { get; set; } = null!;

public string Organisation { get; set; } = null!;

public string ActivityArea { get; set; } = null!;
}
28 changes: 28 additions & 0 deletions core/Data/Responses/OrganizerResponseDTO.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using api.core.data.entities;

namespace api.core.Data.Responses;

public class OrganizerResponseDTO
{
public Guid Id { get; set; }

public string Name { get; set; } = null!;

public string Email { get; set; } = null!;

public string Organisation { get; set; } = null!;

public string ActivityArea { get; set; } = null!;

public static OrganizerResponseDTO Map(Organizer organizer)
{
return new OrganizerResponseDTO
{
Id = organizer.Id,
Name = organizer.Name,
Email = organizer.Email,
Organisation = organizer.Organisation,
ActivityArea = organizer.ActivityArea,
};
}
}
9 changes: 8 additions & 1 deletion core/Extensions/DependencyInjectionExtension.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
namespace api.core.Extensions;
using api.core.repositories;
using api.core.repositories.abstractions;
using api.core.services.abstractions;
using api.core.Services;

namespace api.core.Extensions;

public static class DependencyInjectionExtension
{
public static IServiceCollection AddDependencyInjection(this IServiceCollection services)
{
// Repositories
services.AddTransient<IOrganizerRepository, OrganizerRepository>();

// Services
services.AddTransient<IOrganizerService, OrganizerService>();

return services;
}
Expand Down
15 changes: 1 addition & 14 deletions core/Migrations/EventManagementContextModelSnapshot.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// <auto-generated />
// <auto-generated />
using System;
using api.core.data;
using Microsoft.EntityFrameworkCore;
Expand Down Expand Up @@ -251,19 +251,6 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.ToTable("PublicationTag", (string)null);
});

modelBuilder.Entity("TagTag", b =>
{
b.Property<long>("ChildrenTagsId")
.HasColumnType("bigint");

b.Property<long>("ParentTagsId")
.HasColumnType("bigint");

b.HasKey("ChildrenTagsId", "ParentTagsId");

b.ToTable("TagTag");
});

modelBuilder.Entity("TagsHierarchy", b =>
{
b.Property<long>("ChildrenTagsId")
Expand Down
9 changes: 9 additions & 0 deletions core/Repositories/Abstractions/IOrganizerRepository.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using api.core.data.entities;
using api.core.Data.requests;

namespace api.core.repositories.abstractions;

public interface IOrganizerRepository
{
public Organizer AddOrganizer(OrganizerCreationRequestDTO organizer);
}
27 changes: 27 additions & 0 deletions core/Repositories/OrganizerRepository.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using api.core.data;
using api.core.data.entities;
using api.core.Data.requests;
using api.core.repositories.abstractions;

namespace api.core.repositories;

public class OrganizerRepository(EventManagementContext context) : IOrganizerRepository
{
public Organizer AddOrganizer(OrganizerCreationRequestDTO organizer)
{
var inserted = context.Organizers.Add(new Organizer
{
Id = organizer.Id,
Name = organizer.Name,
Email = organizer.Email,
Organisation = organizer.Organisation,
ActivityArea = organizer.ActivityArea,
});
if(inserted.Entity != null)
{
context.SaveChanges();
return inserted.Entity;
}
throw new Exception($"Unable to create an organizer {organizer.Id}");
}
}
9 changes: 9 additions & 0 deletions core/Services/Abstractions/IOrganizerService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using api.core.Data.requests;
using api.core.Data.Responses;

namespace api.core.services.abstractions;

public interface IOrganizerService
{
public OrganizerResponseDTO AddOrganizer(OrganizerCreationRequestDTO organizerDto);
}
15 changes: 15 additions & 0 deletions core/Services/OrganizerService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using api.core.Data.requests;
using api.core.Data.Responses;
using api.core.repositories.abstractions;
using api.core.services.abstractions;

namespace api.core.Services;

public class OrganizerService(IOrganizerRepository repository) : IOrganizerService
{
public OrganizerResponseDTO AddOrganizer(OrganizerCreationRequestDTO organizerDto)
{
var inserted = repository.AddOrganizer(organizerDto);
return OrganizerResponseDTO.Map(inserted);
}
}
1 change: 1 addition & 0 deletions core/api.core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.1">
<PrivateAssets>all</PrivateAssets>
Expand Down
Loading