/// <summary> /// Adds the restricted shares. /// </summary> /// <param name="shareholderId">The shareholder identifier.</param> /// <param name="restricted">The restricted.</param> /// <param name="model">The model.</param> /// <returns></returns> public async Task AddRestrictedShares(Guid shareholderId, long restricted, CompanyAddOptionPoolToShareholderModel model) { Guid shareAccountId; var query = _shareAccountRepository.GetManyAsNoTracking(x => x.ShareholderId == shareholderId && x.ShareTypeCode.ToLower().Contains(RefShareTypeCode.Restricted)).FirstOrDefault(); if (query == null) { var account = new ShareAccount { ShareAmount = restricted, ShareholderId = shareholderId, ShareTypeCode = RefShareTypeCode.Restricted }; var inserted = _shareAccountRepository.Insert(account).Entity; shareAccountId = inserted.ShareAccountId; } else { query.ShareAmount += restricted; _shareAccountRepository.Update(query); shareAccountId = query.ShareAccountId; } await _restrictedShareService.AddRetrictedShares(model.ConvertibleRatio, model.ConvertibleTime, shareAccountId); }
/// <summary> /// Creates the shares account. /// </summary> /// <param name="model">The model.</param> /// <returns></returns> public async Task <ShareAccount> CreateSharesAccount(SharesAccountCreateModel model) { var sharesAccount = new ShareAccount { ShareAmount = model.ShareAmount, ShareholderId = model.ShareholderId, ShareTypeCode = model.ShareTypeCode }; var result = _shareAccountRepository.Insert(sharesAccount).Entity; await _unitOfWork.CommitAsync(); return(result); }