public void AddTransferRequest(string jsonSummary, decimal cost, decimal fundingCap, Party lastApprovedByParty)
        {
            CheckThereIsNoPendingTransferRequest();
            var transferRequest = new TransferRequest();

            transferRequest.Status          = (byte)Types.TransferApprovalStatus.Pending;
            transferRequest.TrainingCourses = jsonSummary;
            transferRequest.Cost            = cost;
            transferRequest.FundingCap      = fundingCap;

            TransferRequests.Add(transferRequest);
            TransferApprovalStatus = Types.TransferApprovalStatus.Pending;
            Publish(() => new TransferRequestCreatedEvent(transferRequest.Id, Id, DateTime.UtcNow, lastApprovedByParty));
        }