public ResponseMessageDTO RegisterTrainee(RegisterTraineeInputDTO registerTraineeInput)
        {
            try
            {
                //Get trainee who want to register to the training
                Trainee registerTrainee = _traineeRepository.Get(registerTraineeInput.TraineeId);

                //Get training that open for the trainee to register
                Training registerTraining = _trainingRepository.Get(registerTraineeInput.TrainingId);

                //Check the trainee is already registered for the training or not
                if (_compareAppService.Duplicate(registerTrainee.Id, registerTraining.ArrayOfAssignedTrainees) ||
                    _compareAppService.Duplicate(registerTraining.Id, registerTrainee.ArrayOfTargetedTraining))
                {
                    //Already registered -> return message
                    return(new ResponseMessageDTO()
                    {
                        Status = false,
                        Message = L("Register_TraineeFailed_TraineeExisted")
                    });
                }
                else
                {
                    //Not yet register -> register trainee to training
                    List <int> traineesAssigned   = registerTraining.ArrayOfAssignedTrainees.ToList();
                    List <int> targetedForProgram = registerTrainee.ArrayOfTargetedTraining.ToList();

                    traineesAssigned.Add(registerTraineeInput.TraineeId);
                    targetedForProgram.Add(registerTraineeInput.TrainingId);

                    registerTraining.ArrayOfAssignedTrainees = traineesAssigned.ToArray();
                    registerTrainee.ArrayOfTargetedTraining  = targetedForProgram.ToArray();

                    //Update trainee and training to database
                    var updateTraining = _trainingRepository.Update(registerTraining);
                    var updateTrainee  = _traineeRepository.Update(registerTrainee);
                    if (updateTraining.Id != 0)
                    {
                        if (updateTrainee.Id != 0)
                        {
                            return(new ResponseMessageDTO(true, L("Register_TraineeSuccess")));
                        }
                        else
                        {
                            return(new ResponseMessageDTO(false, L("Register_Trainee_UpdateFail")));
                        }
                    }
                    else
                    {
                        return(new ResponseMessageDTO(false, L("Register_Trainee_UpdateTrainingFail")));
                    }
                }
            }
            catch
            {
                return(new ResponseMessageDTO(false, L("Register_TraineeFaile")));
            }
        }
 public ResponseMessageDTO register(RegisterTraineeInputDTO registerTraineeInput)
 {
     return(_traineeAppService.RegisterTrainee(registerTraineeInput));
 }