public async Task <CreateLecturerResponse> Handle(CreateLecturerRequest request, CancellationToken cancellationToken)
        {
            var result = new CreateLecturerResponse();

            try
            {
                // Validation
                if (!request.IsValid())
                {
                    result.ValidationResult = request.ValidationResult;
                    return(await Task.FromResult(result));
                }

                // Map Lecturer
                var lecturer = MapLecturer(request);

                //add lecturer to context repository
                _lecturerRepository.Create(lecturer);

                // persist data
                result.ValidationResult = await PersistData(_lecturerRepository.UnitOfWork);

                //Map return
                result.LecturerId = lecturer.Id;
            }
            catch (Exception ex)
            {
                _log.Error($"", JsonConvert.SerializeObject(ex));
                result.ValidationResult.Errors.Add(new ValidationFailure(string.Empty, "An error has occurred please try again."));
            }

            return(await Task.FromResult(result));
        }