public async Task <ActionResult> PostIdeaAsync([FromBody] IdeaEntity idea) { ThemeEntity parentTheme = await _context.Themes.Where(t => t.ThemeId == idea.ThemeId).SingleAsync(); if (parentTheme != null && (parentTheme.CloseDt - DateTime.Now < TimeSpan.Zero)) { return(Forbid()); } idea.SubmitDt = DateTime.Now; idea.ModifiedDt = idea.SubmitDt; idea.Owner = "Michael"; await _context.Ideas.AddAsync(idea); await _context.SaveChangesAsync(true, "testSame"); Status ideaStatus = new Status() { StatusCode = StatusType.Submitted, Response = "", SubmitDt = idea.SubmitDt, IdeaId = idea.PostId, Idea = idea }; await _context.Statuses.AddAsync(ideaStatus); await _context.SaveChangesAsync(true, "testSam"); return(Ok(idea)); }
public static IdeaEntity LoadData(int currentPage, int pagesize) { var db = new DataAccess(); var ideaEntity = new IdeaEntity(); var tpId = -1; Page obj = new Page(); int.TryParse(obj.Session["TopicId"].ToString(), out tpId); if (tpId == -1) { return(null); } var lstIdeas = db.GetIdeasByTopic(tpId); if (lstIdeas == null || lstIdeas.Count == 0) { return(null); } var lstIdeaUi = new List <IdeaUI>(); foreach (var x in lstIdeas) { var ideaUi = new IdeaUI(); ideaUi.ideaId = x.Id; ideaUi.userName = db.GetUserById(x.PersonalId).Name; ideaUi.ideaTitle = x.Title.Replace("\"", "'").Replace(Environment.NewLine, " "); ideaUi.ideaContent = x.Details.Replace("\"", "'").Replace(Environment.NewLine, " "); ideaUi.postedDate = new Common().CalculateDateRange(x.PostedDate); lstIdeaUi.Add(ideaUi); } var total = lstIdeas.Count; int totalPage; if (total > pagesize && total % pagesize == 0) { totalPage = total / pagesize; } else if (total > pagesize && total % pagesize != 0) { totalPage = total / pagesize + 1; } else { totalPage = 1; } ideaEntity.ListIdeas = lstIdeaUi.Skip(currentPage * pagesize).Take(pagesize).ToList(); ideaEntity.TotalPage = totalPage; return(ideaEntity); }
public async Task <IActionResult> PatchAsync([FromBody] IdeaEntity ideaEntity) { this.RecordEvent("Ideas - HTTP Patch idea call accepted the request."); try { #pragma warning disable CA1062 // idea entity is validated by model validations for null check and is responded with bad request status if (string.IsNullOrEmpty(ideaEntity.IdeaId)) #pragma warning restore CA1062 // idea entity is validated by model validations for null check and is responded with bad request status { this.logger.LogError($"{nameof(ideaEntity.IdeaId)} is found to be null or empty to update idea."); return(this.BadRequest($"Parameter {nameof(ideaEntity.IdeaId)} cannot be null or empty.")); } // Validating Idea Id as it will be generated at server side in case of adding new post but cannot be null or empty in case of update. var entity = await this.ideaStorageProvider.GetIdeaEntityAsync(ideaEntity.CreatedByObjectId, ideaEntity.IdeaId); if (entity == null) { this.logger.LogError($"Entity for {ideaEntity.IdeaId} is not found to update."); this.RecordEvent("Update idea - HTTP Patch call failed"); return(this.BadRequest($"An update cannot be performed for {ideaEntity.IdeaId} because entity is not available.")); } entity.ApprovedOrRejectedByName = this.UserName; entity.ApproverOrRejecterUserId = this.UserAadId; entity.Status = ideaEntity.Status; entity.Feedback = ideaEntity.Feedback; entity.Category = ideaEntity.Category; entity.CategoryId = ideaEntity.CategoryId; entity.UpdatedDate = DateTime.UtcNow; var result = await this.ideaStorageProvider.UpsertIdeaAsync(entity); if (result) { this.RecordEvent("Team idea - HTTP Patch call succeeded"); await this.ideaSearchService.RunIndexerOnDemandAsync(); } return(this.Ok(result)); } catch (Exception ex) { this.logger.LogError(ex, "Error while making call to idea post service."); throw; } }
/// <summary> /// Create updated team idea model data for storage. /// </summary> /// <param name="ideaEntity">Team idea detail.</param> /// <returns>A task that represents idea entity updated data.</returns> public IdeaEntity CreateUpdatedTeamIdeaModel(IdeaEntity ideaEntity) { try { ideaEntity = ideaEntity ?? throw new ArgumentNullException(nameof(ideaEntity)); ideaEntity.UpdatedDate = DateTime.UtcNow; return(ideaEntity); } catch (Exception ex) { this.logger.LogError(ex, "Exception occurred while getting the team idea model data"); throw; } }
public async Task <IActionResult> PostAsync([FromBody] IdeaEntity ideaEntity) { this.RecordEvent("Ideas - HTTP Post idea call accepted the request."); try { var updatedTeamPostEntity = new IdeaEntity { IdeaId = Guid.NewGuid().ToString(), CreatedByObjectId = this.UserAadId, CreatedByName = this.UserName, CreatedDate = DateTime.UtcNow, UpdatedDate = DateTime.UtcNow, TotalVotes = 0, Status = (int)IdeaStatus.Pending, #pragma warning disable CA1062 // team idea entity is validated by model validations for null check and is responded with bad request status Title = ideaEntity.Title, Description = ideaEntity.Description, Category = ideaEntity.Category, CategoryId = ideaEntity.CategoryId, DocumentLinks = ideaEntity.DocumentLinks, Tags = ideaEntity.Tags, CreatedByUserPrincipalName = this.UserPrincipalName, #pragma warning restore CA1062 // team idea entity is validated by model validations for null check and is responded with bad request status }; var result = await this.ideaStorageProvider.UpsertIdeaAsync(updatedTeamPostEntity); if (result) { this.RecordEvent("Idea - HTTP Post call succeeded"); await this.ideaSearchService.RunIndexerOnDemandAsync(); return(this.Ok(updatedTeamPostEntity)); } return(this.Ok(result)); } catch (Exception ex) { this.logger.LogError(ex, "Error while making call to idea service."); this.RecordEvent("An exception occurred for Idea - HTTP Post call."); throw; } }
/// <summary> /// Stores or update team idea details data in Microsoft Azure Table storage. /// </summary> /// <param name="entity">Holds team idea detail entity data.</param> /// <returns>A task that represents idea post entity data is saved or updated.</returns> private async Task <TableResult> StoreOrUpdateEntityAsync(IdeaEntity entity) { await this.EnsureInitializedAsync(); entity = entity ?? throw new ArgumentNullException(nameof(entity)); if (string.IsNullOrWhiteSpace(entity.Title) || string.IsNullOrWhiteSpace(entity.Description) || string.IsNullOrWhiteSpace(entity.Category) || entity?.Title.Length > IdeaTitleMaxLength || entity?.Description.Length > IdeaDescriptionMaxLength) { return(null); } TableOperation addOrUpdateOperation = TableOperation.InsertOrReplace(entity); return(await this.CloudTable.ExecuteAsync(addOrUpdateOperation)); }
/// <summary> /// Create team idea model data. /// </summary> /// <param name="teamIdeaEntity">Team idea detail.</param> /// <param name="userId">User Azure active directory id.</param> /// <param name="userName">Author who created the idea.</param> /// <returns>A task that represents team idea entity data.</returns> public IdeaEntity CreateTeamIdeaModel(IdeaEntity teamIdeaEntity, string userId, string userName) { try { teamIdeaEntity = teamIdeaEntity ?? throw new ArgumentNullException(nameof(teamIdeaEntity)); teamIdeaEntity.IdeaId = Guid.NewGuid().ToString(); teamIdeaEntity.CreatedByObjectId = userId; teamIdeaEntity.CreatedByName = userName; teamIdeaEntity.CreatedDate = DateTime.UtcNow; teamIdeaEntity.UpdatedDate = DateTime.UtcNow; return(teamIdeaEntity); } catch (Exception ex) { this.logger.LogError(ex, "Exception occurred while creating the idea model data."); throw; } }
/// <summary> /// Stores or update team idea details data in Microsoft Azure Table storage. /// </summary> /// <param name="ideaEntity">Holds team idea detail entity data.</param> /// <returns>A boolean that represents team idea entity data is successfully saved/updated or not.</returns> public async Task <bool> UpsertIdeaAsync(IdeaEntity ideaEntity) { var result = await this.StoreOrUpdateEntityAsync(ideaEntity); return(result.HttpStatusCode == (int)HttpStatusCode.NoContent); }
/// <summary> /// Get container for team ideas. /// </summary> /// <param name="teamIdea">Team post entity object.</param> /// <returns>Return a container for team ideas.</returns> private AdaptiveContainer GetPostTypeContainer(IdeaEntity teamIdea) { string applicationBasePath = this.options.Value.AppBaseUri; var postTypeContainer = new AdaptiveContainer { Items = new List<AdaptiveElement> { new AdaptiveColumnSet { Columns = new List<AdaptiveColumn> { new AdaptiveColumn { Width = AdaptiveColumnWidth.Auto, VerticalContentAlignment = AdaptiveVerticalContentAlignment.Center, Items = new List<AdaptiveElement> { new AdaptiveTextBlock { Text = $"**{this.localizer.GetString("IdeatorLabelText")}:**", Wrap = true, }, }, Spacing = AdaptiveSpacing.Small, }, new AdaptiveColumn { Width = AdaptiveColumnWidth.Auto, Items = new List<AdaptiveElement> { new AdaptiveImage { Url = new Uri($"{applicationBasePath}/Artifacts/peopleAvatar.png"), Size = AdaptiveImageSize.Auto, Style = AdaptiveImageStyle.Person, AltText = "User Image", }, }, Spacing = AdaptiveSpacing.Small, }, new AdaptiveColumn { Width = AdaptiveColumnWidth.Stretch, VerticalContentAlignment = AdaptiveVerticalContentAlignment.Center, Items = new List<AdaptiveElement> { new AdaptiveTextBlock { Text = teamIdea.CreatedByName.Length > AdaptiveCardUserNameMaxCharacterLength ? $"{teamIdea.CreatedByName.Substring(0, AdaptiveCardUserNameMaxCharacterLength - 1)} ..." : teamIdea.CreatedByName, Wrap = true, }, }, Spacing = AdaptiveSpacing.Small, }, new AdaptiveColumn { Width = AdaptiveColumnWidth.Auto, VerticalContentAlignment = AdaptiveVerticalContentAlignment.Center, Items = new List<AdaptiveElement> { new AdaptiveTextBlock { Text = $"{teamIdea.TotalVotes} ", Wrap = true, }, }, Spacing = AdaptiveSpacing.Small, }, new AdaptiveColumn { Width = AdaptiveColumnWidth.Auto, VerticalContentAlignment = AdaptiveVerticalContentAlignment.Center, Items = new List<AdaptiveElement> { new AdaptiveImage { Url = new Uri($"{applicationBasePath}/Artifacts/voteIcon.png"), PixelWidth = VoteIconWidth, PixelHeight = VoteIconHeight, Style = AdaptiveImageStyle.Default, }, }, Spacing = AdaptiveSpacing.Small, }, }, }, }, }; return postTypeContainer; }