Beispiel #1
0
        public DomainObjects.Portfolio.Portfolio Create(string email, int advisorId, decimal price, string name, string description,
                                                        double projectionValue, double?optimisticProjection, double?pessimisticProjection, Dictionary <int, double> distribution)
        {
            var advisor = AdvisorBusiness.GetWithOwner(advisorId, email);

            if (advisor == null)
            {
                throw new ArgumentException("Invalid advisor.");
            }

            var risk          = GetRisk(projectionValue, distribution);
            var advisorDetail = AdvisorDetailBusiness.GetForAutoEnabled(advisorId);

            var portfolio = new DomainObjects.Portfolio.Portfolio();

            portfolio.AdvisorId    = advisorId;
            portfolio.CreationDate = DateTime.UtcNow;
            using (var transaction = new TransactionalDapperCommand())
            {
                transaction.Insert(portfolio);
                var detail = PortfolioDetailBusiness.SetNew(portfolio.Id, price, name, description, true);
                transaction.Insert(detail);
                var projection = ProjectionBusiness.SetNew(portfolio.Id, projectionValue, risk, optimisticProjection, pessimisticProjection);
                transaction.Insert(projection);
                var distributions = DistributionBusiness.SetNew(projection.Id, distribution);
                foreach (Distribution dist in distributions)
                {
                    transaction.Insert(dist);
                }

                portfolio.ProjectionId = projection.Id;
                transaction.Update(portfolio);
                if (advisorDetail != null)
                {
                    advisorDetail = AdvisorDetailBusiness.SetNew(advisorId, advisorDetail.Name, advisorDetail.Description, true);
                    transaction.Insert(advisorDetail);
                }
                projection.Distribution = distributions;
                portfolio.Projection    = projection;
                portfolio.Detail        = detail;
                transaction.Commit();
            }
            return(portfolio);
        }
Beispiel #2
0
 public AdvisorDetail DisableAdvisor(string email, int advisorId)
 {
     return(AdvisorDetailBusiness.Disable(email, advisorId));
 }
Beispiel #3
0
 public AdvisorDetail UpdateAdvisor(string email, int advisorId, string name, string description)
 {
     return(AdvisorDetailBusiness.Create(email, advisorId, name, description));
 }