public async Task <GetProjectDTO <ProjectEditViewModel> > CreateNewProjectAsync(string portfolio)
        {
            var context = ServiceContext.PortfolioContext;
            var config  = await portfolioService.GetConfigAsync(portfolio);

            ServiceContext.AssertPermission(config.Portfolio);
            var reservation = await portfolioService.GetProjectReservationAsync(config);

            await context.SaveChangesAsync();

            var newProject = new Project()
            {
                Reservation = reservation
            };

            ProjectEditViewModel newProjectModel = ProjectModelFactory.GetProjectEditModel(newProject);

            var result = new GetProjectDTO <ProjectEditViewModel>()
            {
                Config  = PortfolioMapper.GetProjectLabelConfigModel(config, PortfolioFieldFlags.Create),
                Options = await portfolioService.GetNewProjectOptionsAsync(config),
                Project = newProjectModel
            };

            return(result);
        }
예제 #2
0
        static ProjectDataInboundResolver()
        {
            var unmappedToProject = PortfolioMapper.GetUnmappedSourceMembers <ProjectUpdateModel, Project>(PortfolioMapper.projectConfig);
            var unmappedToUpdate  = PortfolioMapper.GetUnmappedSourceMembers <ProjectUpdateModel, ProjectUpdateItem>(PortfolioMapper.projectConfig);

            unmappedProperties = unmappedToProject.Intersect(unmappedToUpdate).ToDictionary(p => p.Name);
        }
        public void NullableFloatMap()
        {
            PortfolioMapper.Configure();
            float?f = PortfolioMapper.ExportMapper.Map <float?>(string.Empty);

            Assert.IsNull(f);
        }
 public void MappingProfilesAreValid()
 {
     PortfolioMapper.Configure();
     PortfolioMapper.projectConfig.AssertConfigurationIsValid();
     PortfolioMapper.configConfig.AssertConfigurationIsValid();
     PortfolioMapper.updateConfig.AssertConfigurationIsValid();
     PortfolioMapper.exportConfig.AssertConfigurationIsValid();
 }
        public async Task <IActionResult> Index([FromServices] UserManager <User> userManager)
        {
            var _user = await userManager.GetUserAsync(User);

            IPortfolio p = new Portfolio(_user.secret_accesstoken);

            PortfolioMapper mapper = p.SeePortfolio();

            return(View(mapper));
        }
 protected void Application_Start()
 {
     AppLog.TraceInformation("Portfolio application starting...");
     AppLog.Indent();
     GlobalConfiguration.Configure(WebApiConfig.Register);
     GlobalConfiguration.Configuration.MessageHandlers.Add(new ApiKeyMessageHandler());
     GlobalConfiguration.Configuration.Filters.Add(new LogExceptionFilterAttribute());
     PortfolioMapper.Configure();
     AppLog.Unindent();
     AppLog.TraceInformation("Portfolio application started.");
 }
예제 #7
0
        public PortfolioMapper SeePortfolio()
        {
            var client = new RestClient("https://paper-api.alpaca.markets/v2/positions");

            client.Timeout = -1;
            var request = new RestRequest(Method.GET);

            request.AddHeader("Authorization", $"Bearer {_pToken}");
            IRestResponse response = client.Execute(request);
            var           JsonObj_PortfolioData = JsonConvert.DeserializeObject(response.Content);

            PortfolioMapper mapper = new PortfolioMapper();

            mapper.TradingInfo = JsonObj_PortfolioData;

            return(mapper);
        }
예제 #8
0
        public async Task <GetProjectQueryDTO> FilterOptionsAsync([FromUri(Name = "portfolio")] string viewKey)
        {
            GetProjectQueryDTO result = null;

            using (var context = new PortfolioContext())
            {
                var config = await portfolioService.GetConfigAsync(viewKey);

                var customFields = portfolioService.GetCustomFilterLabels(config);

                result = new GetProjectQueryDTO()
                {
                    Config  = PortfolioMapper.GetProjectLabelConfigModel(config, PortfolioFieldFlags.FilterProject | PortfolioFieldFlags.FilterRequired, customLabels: customFields),
                    Options = await portfolioService.GetNewProjectOptionsAsync(config)
                };
            }
            return(result);
        }
예제 #9
0
        private void CriarPortfolio()
        {
            Portfolio portfolio = new Portfolio();

            Console.WriteLine("Insert cc of Client");
            portfolio.cc = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Insert name of Portfolio");
            portfolio.nome = Console.ReadLine();
            PortfolioMapper mapper = new PortfolioMapper();

            if (mapper.Create(portfolio) > 0)
            {
                Console.WriteLine("SUCCESS");
            }
            else
            {
                Console.WriteLine("UNSUCCESS");
            }
        }
예제 #10
0
        private void RemoverPortfolio()
        {
            Portfolio portfolio = new Portfolio();

            Console.WriteLine("Insert the cc of Client's Portfolio you want to REMOVE");
            portfolio.cc = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Insert the name Portfolio you want to REMOVE");
            portfolio.nome = Console.ReadLine();
            PortfolioMapper mapper = new PortfolioMapper();

            if (mapper.Delete(portfolio) > 0)
            {
                Console.WriteLine("SUCCESS");
            }
            else
            {
                Console.WriteLine("UNSUCCESS");
            }
        }
예제 #11
0
        public void MapPortfolioToViewModelOnSuccessReturnsProperties()
        {
            //arrange
            var mean      = 1D;
            var statistic = new Mock <IStatistic>();

            statistic.Setup(s => s.Mean).Returns(mean);

            var frequency      = 2D;
            var histogramDatum = new HistogramDatum
            {
                Frequency = frequency
            };
            IList <HistogramDatum> histogram = new[] { histogramDatum };

            var            successProbability   = 3D;
            IList <double> successProbabilities = new[] { successProbability };

            var portfolio = new Mock <IPortfolio>();

            portfolio.Setup(p => p.Statistics).Returns(statistic.Object);
            portfolio.Setup(p => p.Histogram).Returns(histogram);
            portfolio.Setup(p => p.SuccessProbabilities).Returns(successProbabilities);

            var statisticsViewModel = new StatisticViewModel {
                Mean = mean
            };
            var statisticMapper = new Mock <IStatisticMapper>();

            statisticMapper.Setup(m => m.MapStatisticToViewModel(
                                      It.Is <IStatistic>(s => s.Mean == mean)))
            .Returns(statisticsViewModel);

            var mapper = new PortfolioMapper(statisticMapper.Object);

            //act
            var result = mapper.MapPortfolioToViewModel(portfolio.Object);

            //assert
            Assert.AreEqual(mean, result.Statistics.Mean);
            Assert.AreEqual(frequency, result.Histogram[0].Frequency);
            Assert.AreEqual(successProbability, result.SuccessProbabilities[0]);
        }
        public void NewProjectMap()
        {
            PortfolioMapper.Configure();
            var newProject = new Project()
            {
                Reservation = new ProjectReservation()
                {
                    ProjectId = "TEST123"
                }
            };

            var model = ProjectModelFactory.GetProjectEditModel(newProject);

            Assert.IsNotNull(model);

            var minYear = DateTime.Now.Year - PortfolioSettings.ProjectDateMinYearOffset;
            var maxYear = DateTime.Now.Year + PortfolioSettings.ProjectDateMaxYearOffset;

            Assert.AreEqual(minYear, model.MinProjectYear);
            Assert.AreEqual(maxYear, model.MaxProjectYear);
        }
        public async Task <GetProjectExportDTO> GetProjectExportDTOAsync(string viewKey)
        {
            // Get the data
            List <int> reservationIds = await getReservationIdsForPortfolio(viewKey);

            var projects = await getProjectsAsArrayWitUpdatesAsync(reservationIds);

            var config = await portfolioService.GetConfigAsync(viewKey);

            // To the mapping
            GetProjectExportDTO result = new GetProjectExportDTO()
            {
                Config   = PortfolioMapper.GetProjectLabelConfigModel(config, includedOnly: true),
                Projects = PortfolioMapper.ExportMapper.Map <IEnumerable <ProjectExportModel> >(projects,
                                                                                                opts => {
                    opts.Items[ExportUpdateTextResolver.OnKey] = true;
                })
            };

            return(result);
        }
        public void NoLeadSummaryTest()
        {
            // Configure test data
            var l1 = new Person()
            {
                Id = 1, ActiveDirectoryDisplayName = "Person1"
            };
            var ph1 = new ProjectPhase()
            {
                Id = 1, Name = "Phase1", ViewKey = "phase1", Order = 0
            };
            var ph2 = new ProjectPhase()
            {
                Id = 2, Name = "Phase2", ViewKey = "phase2", Order = 1
            };
            var ph5 = new ProjectPhase()
            {
                Id = 5, Name = "Phase5", ViewKey = "phase5", Order = 2
            };

            PortfolioConfiguration config = new PortfolioConfiguration()
            {
                Phases = new List <ProjectPhase>()
                {
                    ph1, ph2, ph5
                },
                Labels = new List <PortfolioLabelConfig>()
            };

            ph1.Configuration = config;
            ph2.Configuration = config;
            ph5.Configuration = config;

            var up1 = new ProjectUpdateItem()
            {
                Phase = ph1
            };
            var up2 = new ProjectUpdateItem()
            {
                Phase = ph1
            };
            Portfolio portfolio = new Portfolio()
            {
                Configuration = config,
                Projects      = new List <Project>()
                {
                    new Project()
                    {
                        ProjectReservation_Id = 1,
                        Name    = "Project1",
                        Updates = new List <ProjectUpdateItem>()
                        {
                            up1
                        },
                        LatestUpdate = up1
                    },
                    new Project()
                    {
                        ProjectReservation_Id = 2,
                        Name    = "Project2",
                        Updates = new List <ProjectUpdateItem>()
                        {
                            up2
                        },
                        LatestUpdate = up2,
                        Lead         = l1,
                        Lead_Id      = l1.Id
                    }
                }
            };

            portfolio.Configuration.Portfolio      = portfolio;
            portfolio.Configuration.CompletedPhase = ph5;
            var summaryType = PortfolioSummaryModel.ByLead;

            // Initialise mapping configuration
            PortfolioMapper.Configure();

            // Map the test data
            var result = PortfolioMapper.ConfigMapper.Map <PortfolioSummaryModel>(
                portfolio,
                opt =>
            {
                opt.Items[nameof(PortfolioConfiguration)]          = portfolio.Configuration;
                opt.Items[PortfolioSummaryResolver.SummaryTypeKey] = summaryType;
            });

            // Check result
            // result
            // -- Phases
            //  -- Phases[0]
            //      -- ViewKey: phase1
            //      -- Count: 2
            //  -- Phases[1]
            //      -- ViewKey: phase2
            //      -- Count: 0
            // -- Summaries
            //  -- Summaries[0]
            //      -- Name: "None set"
            //      -- PhaseProjects
            //          -- Count: 2
            //          -- PhaseProjects[0]
            //              -- ViewKey: "phase1"
            //              -- Projects
            //                  -- Count: 1
            //                  -- Projects[0]
            //                      -- Name: "Project1"
            //          -- PhaseProjects[1]
            //              -- ViewKey: "phase2"
            //              -- Projects
            //                  -- Count: 0
            //  -- Summaries[1]
            //      -- Name: "Person1"
            //      -- PhaseProjects
            //          -- PhaseProjects[0]
            //              -- ViewKey: "phase1"
            //              -- Projects
            //                  -- Count: 1
            //                  -- Projects[0]
            //                      -- Name: "Project2"
            //          -- PhaseProjects[1]
            //              -- ViewKey: "phase2"
            //              -- Projects
            //                  -- Count: 0
            var phases = result.Phases.ToList();

            Assert.AreEqual(2, phases.Count());
            Assert.AreEqual("phase1", phases[0].ViewKey);
            Assert.AreEqual("phase2", phases[1].ViewKey);
            Assert.AreEqual(2, phases[0].Count); // Projects in phase 1
            Assert.AreEqual(0, phases[1].Count); // This is phase 2 (completed phase is hidden)

            var summaries = result.Summaries.ToList();

            // ... counts
            Assert.AreEqual(2, summaries.Count());

            // ... Summary 0 ("None set") should have 1 project in phase1
            Assert.AreEqual(ProjectTeamConstants.NotSetName, summaries[0].Name);
            Assert.AreEqual(2, summaries[0].PhaseProjects.ToList().Count());
            Assert.AreEqual("phase1", summaries[0].PhaseProjects.ToList()[0].ViewKey);
            Assert.AreEqual(1, summaries[0].PhaseProjects.ToList()[0].Projects.Count());
            Assert.AreEqual("Project1", summaries[0].PhaseProjects.ToList()[0].Projects.First().Name);

            Assert.AreEqual("phase2", summaries[0].PhaseProjects.ToList()[1].ViewKey);
            Assert.AreEqual(0, summaries[0].PhaseProjects.ToList()[1].Projects.Count());

            // ... Summary 1 ("Person1") should have 1 project in phase1
            Assert.AreEqual("Person1", summaries[1].Name);
            Assert.AreEqual(2, summaries[1].PhaseProjects.ToList().Count());
            Assert.AreEqual("phase1", summaries[1].PhaseProjects.ToList()[0].ViewKey);
            Assert.AreEqual(1, summaries[1].PhaseProjects.ToList()[0].Projects.Count());
            Assert.AreEqual("Project2", summaries[1].PhaseProjects.ToList()[0].Projects.First().Name);

            Assert.AreEqual("phase2", summaries[1].PhaseProjects.ToList()[1].ViewKey);
            Assert.AreEqual(0, summaries[1].PhaseProjects.ToList()[1].Projects.Count());
        }
 static ProjectFlaggingTests()
 {
     PortfolioMapper.Configure();
 }
예제 #16
0
        static ProjectDataOutboundMapper()
        {
            var unmappedToProject = PortfolioMapper.GetUnmappedDestinationMembers <Project, T>(PortfolioMapper.projectConfig);

            unmappedProperties = unmappedToProject.ToDictionary(p => p.Name);
        }
        private async Task <GetProjectDTO <T> > GetProject <T>(string projectId,
                                                               bool includeOptions,
                                                               bool includeHistory,
                                                               bool includeLastUpdate,
                                                               bool includeConfig,
                                                               PortfolioFieldFlags flags             = PortfolioFieldFlags.Read,
                                                               Action <Portfolio> permissionCallback = null)
            where T : ProjectModel, new()
        {
            string            portfolio;
            GetProjectDTO <T> result;


            var context     = ServiceContext.PortfolioContext;
            var reservation = await context.ProjectReservations
                              .SingleOrDefaultAsync(r => r.ProjectId == projectId);

            if (reservation == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            var query = (from p in context.Projects
                         .IncludeProject()
                         .IncludeLabelConfigs() // Need label configs so can map project data fields
                         where p.ProjectReservation_Id == reservation.Id
                         select p);

            if (includeHistory || includeLastUpdate)
            {
                query = query.IncludeUpdates();
            }

            var project = await query.SingleOrDefaultAsync();

            if (project == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            if (permissionCallback != null)
            {
                permissionCallback(project.Reservation.Portfolio);
            }
            else
            {
                ServiceContext.AssertPermission(project.Reservation.Portfolio);
            }

            portfolio = project.Reservation.Portfolio.ViewKey;

            // Build the result
            result = new GetProjectDTO <T>()
            {
                Project = ProjectModelFactory.GetProjectModel <T>(project, includeHistory, includeLastUpdate)
            };

            if (includeConfig)
            {
                var userIsFSA = ServiceContext.UserHasFSAClaim();
                result.Config = PortfolioMapper.GetProjectLabelConfigModel(project.Reservation.Portfolio.Configuration, flags: flags, fsaOnly: !userIsFSA);
            }
            if (includeOptions)
            {
                var config = await portfolioService.GetConfigAsync(portfolio);

                result.Options = await portfolioService.GetNewProjectOptionsAsync(config, result.Project as ProjectEditViewModel);
            }

            return(result);
        }
예제 #18
0
 public PortfolioController(IProjectProvider projectProvider, ProjectMapper projectMapper, PortfolioMapper portfolioMapper)
 {
     _projectProvider = projectProvider;
     _projectMapper   = projectMapper;
     _portfolioMapper = portfolioMapper;
 }