/// <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;
        }
Beispiel #3
0
        /// <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);
        }