public Guid AddTypeMember(AddTypeMemberCommand command)
  {
    ThrowError.Against<ArgumentException>(string.IsNullOrEmpty(command.Name), String.Format(ErrorMessage.IsRequired,"Tên"));
    ThrowError.Against<ArgumentException>(_typeMemberService.Query(t => t.Name.ToUpper().Trim() == command.Name.ToUpper().Trim()).Select().Any(), String.Format(ErrorMessage.Exists, "Tên"));
 
    var count = _typeMemberService.Query(t => ((t.ScoresFrom < command.ScoresFrom && command.ScoresFrom < t.ScoresTo) || (t.ScoresFrom < command.ScoresTo && command.ScoresTo < t.ScoresTo) || (command.ScoresFrom < t.ScoresFrom && t.ScoresFrom < command.ScoresTo) || (command.ScoresFrom < t.ScoresTo && t.ScoresTo < command.ScoresTo) || (command.ScoresFrom == t.ScoresFrom && command.ScoresTo == t.ScoresTo))).Select().Count();
    ThrowError.Against<ArgumentException>(count > 0, String.Format(ErrorMessage.IsNotTypemMember));
   
    var typeMember = new TypeMember()
    {
      Name = command.Name,
      PercentDownPayment = command.PercentDownPayment,
      ScoresFrom = command.ScoresFrom,
      ScoresTo = command.ScoresTo,
      TypeMemberId = Guid.NewGuid()
    };
    _typeMemberService.Insert(typeMember);
    _unitOfWork.SaveChanges();
    return typeMember.TypeMemberId;
  }
 private void Save(TypeMemberModel model)
 {
   if (model.TypeMemberId == Guid.Empty)
   {
     var createCommand = new AddTypeMemberCommand(model.Name,model.ScoresFrom,model.ScoresTo,model.PercentDownPayment);
     model.TypeMemberId = _typeMemberCommandService.AddTypeMember(createCommand);
   }
   else
   {
     var updateCommand = new EditTypeMemberCommand(model.TypeMemberId, model.Name, model.ScoresFrom, model.ScoresTo, model.PercentDownPayment);
     _typeMemberCommandService.EditTypeMember(updateCommand);
   }
 }