0% found this document useful (0 votes)
8 views9 pages

Training Session Management API Code

Uploaded by

devfeuze132
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views9 pages

Training Session Management API Code

Uploaded by

devfeuze132
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

soit le code de mon controller :

using [Link];
using [Link];
using [Link];
using [Link];

namespace [Link]
{
[Route("api/[controller]")]
[ApiController]
public class TrainingSessionController : ControllerBase
{
#region Constructor
private readonly ITrainingSession _trainingSession;
private readonly IWebHostEnvironment _webHostEnvironment;

public TrainingSessionController(ITrainingSession trainingSession,


IWebHostEnvironment webHostEnvironment)
{
_trainingSession = trainingSession;
_webHostEnvironment = webHostEnvironment;
}
#endregion

#region Training Session

#region Get Training Sessions List


[HttpGet("training-sessions-list")]
public IActionResult TrainingSessionList()
{
try
{
var trainingSessionList = _trainingSession.GetAllTrainingSessions;
return Ok(trainingSessionList);
}
catch (Exception ex)
{
return BadRequest(ex);
}
}
#endregion

#region Get training Session By Id


[HttpGet("get-training-session-by-id")]
public IActionResult GetTrainingSessionById(Guid id)
{
try
{
var trainingSession = _trainingSession.GetTrainingSessionById(id);
return Ok(trainingSession);
}
catch (Exception ex)
{
return BadRequest(ex);
}
}
#endregion

#region Count Training Sessions


[HttpGet("count-training-sessions")]
public IActionResult CountTrainingSession()
{
try
{
var nb_training_session = _trainingSession.CountTrainingSessions;
return Ok(nb_training_session);
}
catch (Exception ex)
{
return BadRequest(ex);
}
}
#endregion

#region Create Training Session


[HttpPost("create-training-session")]
public IActionResult CreateTrainingSession(TrainingSessionVM
trainingSession, Guid[] participantsList, Guid[] trainersList)
{
var validationResult = new
TrainingSessionVMValidator().Validate(trainingSession);

ResponseVM response =
[Link](validationResult);

if ([Link])
{
try
{
if (_trainingSession.CreateTrainingSession(trainingSession,
participantsList, trainersList))
{
[Link] = true;
[Link] = "Training Session created
successfully.";
return Ok(response);
}
else
{
[Link] = false;
[Link] = "An error occurred while registering the
trainer.";
return Ok(response);
}
}
catch (Exception ex)
{
return BadRequest(response);
}
}
return BadRequest(response);
}
#endregion

#region Update Training Session


[HttpPut("update-training-session")]
public IActionResult UpdateParticipant(TrainingSessionVM trainingSession,
Guid[] participantsList, Guid[] trainersList)
{
var validationResult = new
TrainingSessionVMValidator().Validate(trainingSession);

ResponseVM response =
[Link](validationResult);

if ([Link])
{
try
{
if (_trainingSession.UpdateTrainingSession(trainingSession,
participantsList, trainersList))
{
[Link] = true;
[Link] = "Training Session modified
successfully.";
return Ok(response);
}
else
{
[Link] = false;
[Link] = "An error occurred while registering the
trainer.";
return Ok(response);
}
}
catch (Exception ex)
{
return BadRequest(response);
}
}
return BadRequest(response);
}
#endregion

#region Delete Training Session


[HttpDelete("delete-training-session")]
public IActionResult DeleteTrainingSession(Guid id)
{
ResponseVM response = new ResponseVM();
try
{
if (_trainingSession.DeleteTrainingSession(id))
{
[Link] = true;
[Link] = "Training Session deleted successfully.";
return Ok(response);
}
else
{
[Link] = false;
[Link] = "Error during the operation.";
return Ok(response);
}
}
catch (Exception ex)
{
return BadRequest(response);
}
}
#endregion

#endregion

}
}
soit le code de mon interface :
using [Link];
using [Link];

namespace [Link]
{
public interface ITrainingSession
{
#region Training Session Services Interface

IEnumerable<TrainingSessionVM> GetAllTrainingSessions { get; }


TrainingSession GetTrainingSessionById(Guid trainingSessionId);
bool CreateTrainingSession(TrainingSessionVM trainingSession, Guid[]
participantsList, Guid[] trainersList);
bool UpdateTrainingSession(TrainingSessionVM trainingSession, Guid[]
participantsList, Guid[] trainersList);
bool DeleteTrainingSession(Guid trainingSessionId);
int CountTrainingSessions { get; }

#endregion
}
}
soit le code de mon repository :
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];

namespace [Link]
{
public class TrainingSessionServices : ITrainingSession
{
#region Constructor

private readonly IUnitOfWork _unitOfWork;


protected readonly ILogger _logger;
private readonly IWebHostEnvironment _hostingEnv;

public TrainingSessionServices(IUnitOfWork unitOfWork, ILoggerFactory


loggerFactory,
IWebHostEnvironment hostingEnv)
{
_unitOfWork = unitOfWork;
_logger = [Link]("logs");
_hostingEnv = hostingEnv;
}
#endregion

#region Training Session Services


#region Get All Training Sessions Method
public IEnumerable<TrainingSessionVM> GetAllTrainingSessions =>
_unitOfWork.[Link]
.Where(ts => ![Link])
.Select(ts => new TrainingSessionVM
{
TrainingSessionId = [Link],
Label = [Link],
Description = [Link],
Location = [Link],
NumberOfDate = [Link],
StartingDate = [Link],
EndingDate = [Link],
Status = [Link],
})
.ToList();
#endregion

#region Count Training Sessions Method


public int CountTrainingSessions => _unitOfWork.[Link]();
#endregion

#region Create Training Session Method


public bool CreateTrainingSession(TrainingSessionVM trainingSession, Guid[]
participantsList, Guid[] trainersList)
{
try
{
var trainingSessionObj = new TrainingSession
{
Label = [Link],
Description = [Link],
Location = [Link],
NumberOfDate = [Link],
StartingDate = [Link],
EndingDate = [Link],
Status = [Link],
};

_unitOfWork.[Link](trainingSessionObj);
_unitOfWork.Commit();

foreach (var participantId in participantsList)


{

var trainingSession_participantObj = new


TrainingSessionParticipant
{
TrainingSessionId = [Link],
ParticipantId = participantId,
};

_unitOfWork.[Link](trainingSession_participantObj);
_unitOfWork.Commit();
}

foreach (var trainerId in trainersList)


{
var trainingSession_trainerObj = new TrainingSessionTrainer
{
TrainingSessionId = [Link],
TrainerId = trainerId,
};

_unitOfWork.[Link](trainingSession_trainerObj);
_unitOfWork.Commit();
}

return true;
}
catch (Exception ex)
{
_unitOfWork.Rollback();
_logger.LogError(ex, $"{ex} Error durig the operation: ",
typeof(TrainingSessionServices));
return false;
}
}
#endregion

#region Delete Training Session Method


public bool DeleteTrainingSession(Guid trainingSessionId)
{
try
{
_unitOfWork.[Link](trainingSessionId);

_unitOfWork.Commit();

return true;
}
catch (Exception ex)
{
_unitOfWork.Rollback();
_logger.LogError(ex, $"{ex} Error durig the operation: ",
typeof(TrainingSessionServices));
return false;
}
}
#endregion

#region Get Training Session By Id Method


public TrainingSession GetTrainingSessionById(Guid trainingSessionId)
{
try
{
var trainingSession =
_unitOfWork.[Link](trainingSessionId);
if (trainingSession != null)
{
return trainingSession;
}
_logger.LogError($"Training Session with Id equal to
{trainingSessionId} is not found", typeof(TrainingSessionServices));
return null;
}
catch (Exception ex)
{
_logger.LogError(ex, $"{ex} Error durig the operation: ",
typeof(TrainingSessionServices));
return null;
}
}
#endregion

#region Update Training Session Method


public bool UpdateTrainingSession(TrainingSessionVM trainingSession, Guid[]
participantsList, Guid[] trainersList)
{
try
{
var trainingSessionEntity =
GetTrainingSessionById((Guid)[Link]);

if (trainingSessionEntity != null)
{
var trainingSessionObj = new TrainingSession
{
Id = [Link],
Label = [Link],
Description = [Link],
Location = [Link],
NumberOfDate = [Link],
StartingDate = [Link],
EndingDate = [Link],
Status = [Link],
CreatedAt = [Link],
ModifiedAt = [Link]
};

_unitOfWork.[Link](trainingSessionObj);
_unitOfWork.Commit();

var existingParticipants =
_unitOfWork.[Link]([Link]);

return true;
}

_logger.LogError($"Training Session with Id equal to


{[Link]} is not found",
typeof(TrainingSessionServices));
return false;
}
catch (Exception ex)
{
_unitOfWork.Rollback();
_logger.LogError(ex, $"{ex} Error durig the operation: ",
typeof(TrainingSessionServices));
return false;
}
}
#endregion
#endregion
}
}
soit le code de mon view model :
using [Link];

namespace [Link]
{
public class TrainingSessionVM
{
#region Training Session Formation Properties
/// <summary>
/// Property for storing Training Session Id Key
/// </summary>
public Guid? TrainingSessionId { get; set; }

/// <summary>
/// Property for storing Label
/// </summary>
public string Label { get; set; }

/// <summary>
/// Property for storing Description
/// </summary>
public string Description { get; set; }

/// <summary>
/// Property for storing Location
/// </summary>
public string Location { get; set; }

/// <summary>
/// Property for storing Number Of Date
/// </summary>
public int NumberOfDate { get; set; }

/// <summary>
/// Property for storing Starting Date
/// </summary>
public DateTime StartingDate { get; set; }

/// <summary>
/// Property for storing Ending Date
/// </summary>
public DateTime EndingDate { get; set; }

/// <summary>
/// Property for storing Status
/// </summary>
public TrainingSessionStatus Status { get; set; }

#endregion
}
}
Erreur :
An error occurred while starting the application.
InvalidOperationException: Action
'[Link]
(GestFormAPI)' has more than one parameter that was specified or inferred as bound
from request body. Only one parameter per action may be bound from body. Inspect
the following parameters, and use 'FromQueryAttribute' to specify bound from query,
'FromRouteAttribute' to specify bound from route, and 'FromBodyAttribute' for
parameters to be bound from body:
TrainingSessionVM trainingSession
Guid[] participantsList
Guid[] trainersList

You might also like