/// <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); }
public async Task PublishRestrictedShares([FromBody] CompanyAddOptionPoolToShareholderModel model , [FromRoute] Guid companyId , [FromRoute] Guid shareholderId) { await _companyService.AddOptionPoolToShareholder(model, companyId, shareholderId); Response.StatusCode = (int)HttpStatusCode.OK; }
/// <summary> /// Adds the option pool to shareholder. /// </summary> /// <param name="model">The model.</param> /// <param name="CompanyId">The company identifier.</param> /// <param name="SharesholerId">The sharesholer identifier.</param> /// <returns></returns> /// <exception cref="EntityNotFoundException">Company id {CompanyId} not found</exception> public async Task AddOptionPoolToShareholder(CompanyAddOptionPoolToShareholderModel model, Guid CompanyId, Guid SharesholerId) { var company = _companyRepository.GetById(CompanyId); if (company == null) { throw new EntityNotFoundException($"Company id {CompanyId} not found"); } company.OptionPollAmount -= model.RestrictedAmount; await _shareAccountService.AddRestrictedShares(SharesholerId, model.RestrictedAmount, model); }