public async Task <ChangeRequestStore> AddToChangeRequestStoreAsync(long changeRequestId, ChangeRequestStatus status, string decisionBy) { try { long id = Convert.ToInt64(changeRequestId); ChangeRequestStaging staging = await this.ChangeRequestStagingRepositoryService.FindAsync(id); List <ChangeRequestItemStaging> items = await ChangeRequestItemStagingBusinessService.GetChangeRequestItemsAsync( item => item.ChangeRequestId == id); List <CommentsStaging> comments = await CommentsStagingBusinessService.GetChangeRequestCommentsAsync( item => item.ChangeRequestId == id); List <AttachmentsStaging> attachments = await AttachmentStagingBusinessService.GetChangeRequestAttachmentsAsync( item => item.ChangeRequestId == id); List <ChangeRequestAssignmentStaging> assignments = await AssignmentStagingRepositoryService.GetAsync( item => item.ChangeRequestId == id); List <LikesStaging> likes = await LikesStagingRepositoryService.GetAsync(item => item.ChangeRequestId == id); staging.ChangeRequestItemStagings = items; staging.CommentsStagings = comments; staging.AttachmentsStagings = attachments; staging.ChangeRequestAssignmentStagings = assignments; staging.LikesStagings = likes; // todo: use automapper for map ChangeRequestStaging to ChangeRequesStore ChangeRequestStore changeRequestStoreItem = this.MapToChangeRequestStore(staging); changeRequestStoreItem.DecisionBy = decisionBy; changeRequestStoreItem.Status = status; changeRequestStoreItem.CompletedDateTime = DateTime.UtcNow; this.ChangeRequestStoreRepositoryService.Add(changeRequestStoreItem); return(changeRequestStoreItem); } catch (Exception) { throw; } }