private IdeaService CreateIdeaService()
        {
            var userId  = Guid.Parse(User.Identity.GetUserId());
            var service = new IdeaService(userId);

            return(service);
        }
Exemple #2
0
        private async Task SaveIdea(IDialogContext context, IAwaitable <GraphServiceClient> result)
        {
            var planService = new PlannerService(await result);
            var ideaService = new IdeaService(await result);

            var plan = await planService.GetTeamPlanAsync(Team);

            if (plan == null)
            {
                throw new ApplicationException($"Could not found plan named '{Team.DisplayName}'");
            }

            var plannerTask = await ideaService.CreateAsync(plan.Id, idea.Title, idea.StartDate, idea.Owners.Select(i => i.Id).FirstOrDefault(), idea.Description);

            var plannerTaskUrl = ideaService.GetIdeaUrl(Team.Id, plan.Id, plannerTask.Id);

            try
            {
                var clientContext = await AuthenticationHelper.GetAppOnlySharePointClientContextAsync();

                var metricsService = new MetricsService(clientContext);
                await metricsService.CreateMetricIdeaAsync(metric.Id, plannerTask, Constants.IdeasPlan.Buckets.NewIdea, plannerTaskUrl);
            }
            catch (Exception ex)
            {
                await context.SayAsync("Failed to add item to MetricIdea list: " + ex.Message);
            }

            await context.SayAsync("Idea created.");

            context.Done(idea);
        }
        public JsonResult Edit(IdeaModel model)
        {
            try
            {
                #region " [ Declaration ] "

                IdeaService _service = new IdeaService();

                #endregion

                #region " [ Main processing ] "

                model.CreateBy   = UserID;
                model.UpdateBy   = UserID;
                model.CreateDate = DateTime.Now;
                model.UpdateDate = DateTime.Now;

                #endregion

                // Call to service
                return(this.Json(_service.Save(model), JsonRequestBehavior.AllowGet));
            }
            catch (ServiceException serviceEx)
            {
                throw serviceEx;
            }
            catch (DataAccessException accessEx)
            {
                throw accessEx;
            }
            catch (Exception ex)
            {
                throw new ControllerException(FILE_NAME, "Edit", UserID, ex);
            }
        }
        public JsonResult CheckDelete(IdeaModel model)
        {
            try
            {
                #region " [ Declaration ] "

                IdeaService _service = new IdeaService();

                #endregion

                #region " [ Main process ] "

                model.CreateBy = UserID;

                #endregion

                //Call to service
                return(this.Json(_service.CheckDelete(model), JsonRequestBehavior.AllowGet));
            }
            catch (ServiceException serviceEx)
            {
                throw serviceEx;
            }
            catch (DataAccessException accessEx)
            {
                throw accessEx;
            }
            catch (Exception ex)
            {
                throw new ControllerException(FILE_NAME, "CheckDelete", UserID, ex);
            }
        }
        public ActionResult Edit(string id)
        {
            try
            {
                #region " [ Declaration ] "

                IdeaService _service = new IdeaService();

                ViewBag.id = id;

                #endregion

                // Call to service
                IdeaModel model = _service.GetItemByID(new IdeaModel()
                {
                    ID = new Guid(id), CreateBy = UserID, Insert = false
                });

                return(View(model));
            }
            catch (ServiceException serviceEx)
            {
                throw serviceEx;
            }
            catch (DataAccessException accessEx)
            {
                throw accessEx;
            }
            catch (Exception ex)
            {
                throw new ControllerException(FILE_NAME, "Edit", UserID, ex);
            }
        }
        public ActionResult Index()
        {
            var userId  = Guid.Parse(User.Identity.GetUserId());
            var service = new IdeaService(userId);
            var model   = service.GetIdeas();

            return(View(model));
        }
        public string ShowDialog(int itemId, IdeaService service)
        {
            _itemId  = itemId;
            _service = service;
            var idea = RetrieveItem();

            return(ShowForm(idea));
        }
Exemple #8
0
        private async Task ListIdeasAsync(IDialogContext context, IAwaitable <GraphServiceClient> result)
        {
            var plannerService = new PlannerService(await result);
            var ideaService    = new IdeaService(await result);

            var plan = await plannerService.GetTeamPlanAsync(Team);

            var ideas = await ideaService.GetAsync(Team, plan.Id, status, from);

            var summary = ideas.Length > 0
                ? $"Getting {ideas.Length} {(ideas.Length > 1 ? "ideas" : "idea")} from Microsoft Planner, Please wait..."
                : "No idea was found.";
            await context.SayAsync(summary);

            foreach (var bucket in Constants.IdeasPlan.Buckets.All)
            {
                var bucketIdeas = ideas.Where(i => i.Bucket == bucket).ToArray();
                if (!bucketIdeas.Any())
                {
                    continue;
                }

                if (string.IsNullOrEmpty(status))
                {
                    await context.SayAsync($"{bucket} ({bucketIdeas.Length + " " + (bucket.Length > 1 ? "ideas" : "idea")})");
                }

                int pageSize  = 6;
                int pageCount = (bucketIdeas.Length + pageSize - 1) / pageSize;
                for (int page = 0; page < pageCount; page++)
                {
                    var message = context.MakeMessage();
                    message.AttachmentLayout = AttachmentLayoutTypes.Carousel;

                    var pageIdeas = bucketIdeas.Skip(pageSize * page).Take(pageSize).ToArray();
                    foreach (var idea in pageIdeas)
                    {
                        await ideaService.GetDetailsAsync(idea);

                        var url    = ideaService.GetIdeaUrl(Team.Id, plan.Id, idea.Id);
                        var owners = $"Owners: {idea.Owners.Select(i => i.DisplayName).Join(", ")}";
                        var text   = $"Start Date<br/>{idea.StartDate?.DateTime.ToShortDateString()}";
                        if (idea.Description.IsNotNullAndEmpty())
                        {
                            text += $"<br/><br/>{idea.Description.Replace("\r\n", "<br/>").Replace("\n", "<br/>")}";
                        }
                        var viewAction = new CardAction(ActionTypes.OpenUrl, "View", value: url);
                        var heroCard   = new HeroCard(idea.Title, owners, text, buttons: new List <CardAction> {
                            viewAction
                        });
                        message.Attachments.Add(heroCard.ToAttachment());
                    }
                    await context.PostAsync(message);
                }
            }

            context.Done(ideas);
        }
Exemple #9
0
 public static async Task<IdeaService> GetIdeaServiceAsync()
 {
     if (_service == null)
     {
         _service = new IdeaService();
         await _service.InitAsync();
     }
     return _service;
 }
Exemple #10
0
 public static async Task <IdeaService> GetIdeaServiceAsync()
 {
     if (_service == null)
     {
         _service = new IdeaService();
         await _service.InitAsync();
     }
     return(_service);
 }
        public PartialViewResult Searchidea(string keyword)
        {
            System.Threading.Thread.Sleep(2000);
            IdeaService        ideaserv  = new IdeaService();
            IEnumerable <idea> listeidea = ideaserv.GetMany();
            var data = listeidea.Where(f =>
                                       f.content.StartsWith(keyword)).ToList();

            return(PartialView(data));
        }
Exemple #12
0
        private static IdeaController SetupIdeaController(SqlLiteDbIdeaAdapter sqlLiteDbIdeaAdapter, NotepadFrame notepadFrame,
                                                          ILoggingController loggingController)
        {
            var ideaRepository = new IdeaRepository(sqlLiteDbIdeaAdapter);
            var ideaService    = new IdeaService(ideaRepository);
            var ideaController = new IdeaController((TabControl)notepadFrame.splitControlArea.Panel1.Controls[0],
                                                    ideaService, loggingController);

            return(ideaController);
        }
Exemple #13
0
        public void Repository_is_called_when_retrieving_an_idea_list()
        {
            //Arrange
            var          repository = Substitute.For <IIdeaRepository>();
            IIdeaService service    = new IdeaService(repository);

            //Act
            service.All();

            //Assert
            repository.Received().Retrieve();
        }
        public IdeaController(TabControl area, IdeaService ideaService, ILoggingController loggingController)
        {
            _area              = area;
            this._ideaService  = ideaService;
            _loggingController = loggingController;
            BuildUIArea(_area);
            var ideaList = GetIdeaList(_area);

            PopulateData((ListView)ideaList);

            _loggingController.Log(MessageType.information, "IdeaController Constructed");
        }
Exemple #15
0
        public void Repository_is_called_when_deleting_an_idea()
        {
            //Arrange
            const int    id         = 1;
            var          repository = Substitute.For <IIdeaRepository>();
            IIdeaService service    = new IdeaService(repository);

            //Act
            service.Delete(id);

            //Assert
            repository.Received().Delete(id);
        }
Exemple #16
0
        public void Repository_Is_called_when_saving_An_Idea()
        {
            //Arrange
            const string ideaDescription = "test description 1";
            var          repository      = Substitute.For <IIdeaRepository>();
            IIdeaService service         = new IdeaService(repository);

            //Act
            service.New(new Idea(ideaDescription, 0));

            //Assert
            repository.Received().Create(ideaDescription);
        }
        private async Task <DialogTurnResult> CreateIdeaPhase2Async(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            var tokenResponse = (TokenResponse)stepContext.Result;

            if (tokenResponse?.Token == null)
            {
                await stepContext.Context.SendActivityAsync(MessageFactory.Text("Login was not successful please try again."), cancellationToken);

                return(await stepContext.EndDialogAsync(null, cancellationToken));
            }

            var userProfile = await base.UserProfileAccessor.GetAsync(stepContext.Context);

            var team = userProfile.SelectedTeam;

            var createIdeaOptions = (CreateIdeaOptions)stepContext.Options;
            var planService       = new PlannerService(tokenResponse.Token);
            var plan = await planService.GetTeamPlanAsync(team.Id, team.DisplayName);

            if (plan == null)
            {
                var message = $"Failed to create the idea: could not find plan named '{team.DisplayName}'";
                await stepContext.Context.SendActivityAsync(message);
            }
            else
            {
                var description = $"Next Steps\r\n{createIdeaOptions.NextSteps}" +
                                  $"\r\n\r\nAligned to Metric\r\n{createIdeaOptions.Metric}";
                var ideaService = new IdeaService(tokenResponse.Token);
                try
                {
                    await ideaService.CreateAsync(plan.Id,
                                                  createIdeaOptions.Title,
                                                  new DateTimeOffset(createIdeaOptions.StartDate.Value, TimeSpan.Zero),
                                                  createIdeaOptions.Owner,
                                                  description
                                                  );

                    await stepContext.Context.SendActivityAsync("Idea created.");
                }
                catch (Exception ex)
                {
                    var message = $"Failed to create the idea: {ex.Message}";
                    await stepContext.Context.SendActivityAsync(message);
                }
            }
            return(await stepContext.EndDialogAsync(null, cancellationToken));
        }
Exemple #18
0
        private async Task SaveIdea(IDialogContext context, IAwaitable <GraphServiceClient> result)
        {
            var planService = new PlannerService(await result);
            var ideaService = new IdeaService(await result);

            var plan = await planService.GetTeamPlanAsync(Team);

            if (plan == null)
            {
                throw new ApplicationException($"Could not found plan named '{Team.DisplayName}'");
            }

            var plannerTask = await ideaService.CreateAsync(plan.Id, idea.Title, idea.StartDate, idea.Owners.Select(i => i.Id).FirstOrDefault(), idea.Description);

            var plannerTaskUrl = ideaService.GetIdeaUrl(Team.Id, plan.Id, plannerTask.Id);

            try
            {
                var clientContext = await AuthenticationHelper.GetAppOnlySharePointClientContextAsync();

                var metricsService = new MetricsService(clientContext);
                await metricsService.CreateMetricIdeaAsync(metric.Id, plannerTask, Constants.IdeasPlan.Buckets.NewIdea, plannerTaskUrl);
            }
            catch (Exception ex)
            {
                await context.SayAsync("Failed to add item to MetricIdea list: " + ex.Message);
            }

            await context.SayAsync("Idea created.");

            //var viewAction = new CardAction(ActionTypes.OpenUrl, "View", value: plannerTaskUrl);
            //var heroCard = new HeroCard(
            //    text: "Idea created.",
            //    buttons: new List<CardAction> { viewAction });

            //var message = context.MakeMessage();
            //message.Attachments.Add(heroCard.ToAttachment());
            //await context.PostAsync(message);

            context.Done(idea);
        }
Exemple #19
0
        public JsonResult Index(CustomDataTableRequestHelper requestData)
        {
            try
            {
                #region " [ Declaration ] "

                IdeaService _service = new IdeaService();

                #endregion

                #region " [ Main processing ] "

                // Process sorting column
                requestData = requestData.SetOrderingColumnName();

                #endregion

                //Call to service
                Dictionary <string, object> _return = _service.List(requestData, UserID);
                if ((ResponseStatusCodeHelper)_return[DatatableCommonSetting.Response.STATUS] == ResponseStatusCodeHelper.OK)
                {
                    DataTableResponse <IdeaModel> itemResponse = _return[DatatableCommonSetting.Response.DATA] as DataTableResponse <IdeaModel>;
                    return(this.Json(itemResponse, JsonRequestBehavior.AllowGet));
                }
                //
                return(this.Json(new DataTableResponse <IdeaModel>(), JsonRequestBehavior.AllowGet));
            }
            catch (ServiceException serviceEx)
            {
                throw serviceEx;
            }
            catch (DataAccessException accessEx)
            {
                throw accessEx;
            }
            catch (Exception ex)
            {
                throw new ControllerException(FILE_NAME, "Index", UserID, ex);
            }
        }
        private async Task <DialogTurnResult> ListIdeasPhase2Async(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            var tokenResponse = (TokenResponse)stepContext.Result;

            if (tokenResponse?.Token == null)
            {
                await stepContext.Context.SendActivityAsync(MessageFactory.Text("Login was not successful please try again."), cancellationToken);

                return(await stepContext.EndDialogAsync(null, cancellationToken));
            }

            var handler  = new JwtSecurityTokenHandler();
            var token    = handler.ReadJwtToken(tokenResponse.Token);
            var tenantId = token.Claims.FirstOrDefault(i => i.Type == "tid").Value;

            var userProfile = await UserProfileAccessor.GetAsync(stepContext.Context);

            var team = userProfile.SelectedTeam;

            var listIdeasOptions = (ListIdeasOptions)stepContext.Options;

            var plannerService = new PlannerService(tokenResponse.Token);
            var ideaService    = new IdeaService(tokenResponse.Token);

            var plan = await plannerService.GetTeamPlanAsync(team.Id, team.DisplayName);

            if (plan == null)
            {
                await stepContext.Context.SendActivityAsync(MessageFactory.Text("Could not found the plan."), cancellationToken);

                return(await stepContext.EndDialogAsync(null, cancellationToken));
            }

            var bucketName = ideaService.GetBucketName(listIdeasOptions.Status);
            var ideas      = await ideaService.GetAsync(plan.Id, bucketName, listIdeasOptions.From);

            var summary = ideas.Length > 0
                ? $"Getting {ideas.Length} {(ideas.Length > 1 ? "ideas" : "idea")} from Microsoft Planner, please wait..."
                : "No idea was found.";
            await stepContext.Context.SendActivityAsync(summary);

            foreach (var bucket in IdeasPlan.Buckets.All)
            {
                var bucketIdeas = ideas.Where(i => StringComparer.InvariantCultureIgnoreCase.Equals(i.Bucket, bucket)).ToArray();
                if (!bucketIdeas.Any())
                {
                    continue;
                }

                if (string.IsNullOrEmpty(bucketName))
                {
                    await stepContext.Context.SendActivityAsync($"{bucket} ({bucketIdeas.Length + " " + (bucket.Length > 1 ? "ideas" : "idea")})");
                }

                int pageSize  = 6;
                int pageCount = (bucketIdeas.Length + pageSize - 1) / pageSize;
                for (int page = 0; page < pageCount; page++)
                {
                    var attachments = new List <Attachment>();
                    var pageIdeas   = bucketIdeas.Skip(pageSize * page).Take(pageSize).ToArray();
                    foreach (var idea in pageIdeas)
                    {
                        await ideaService.GetDetailsAsync(idea);

                        var url    = ideaService.GetIdeaUrl(tenantId, team.Id, plan.Id, idea.Id);
                        var owners = $"Owners: {string.Join(",", idea.Owners)}";
                        var text   = $"Start Date<br/>{idea.StartDate?.DateTime.ToShortDateString()}";
                        if (!string.IsNullOrEmpty(idea.Description))
                        {
                            text += $"<br/><br/>{idea.Description.Replace("\r\n", "<br/>").Replace("\n", "<br/>")}";
                        }
                        var viewAction = new CardAction(ActionTypes.OpenUrl, "View", value: url);
                        var heroCard   = new HeroCard(idea.Title, owners, text, buttons: new List <CardAction> {
                            viewAction
                        });
                        attachments.Add(heroCard.ToAttachment());
                    }

                    var message = MessageFactory.Carousel(attachments);
                    await stepContext.Context.SendActivityAsync(message);
                }
            }
            return(await stepContext.EndDialogAsync(null, cancellationToken));
        }
Exemple #21
0
 /// <summary>
 /// Constructor.
 /// </summary>
 public IdeaController(IdeaService ideaService)
 {
     _ideaService = ideaService;
 }