public async Task UpdateIndexForChangeRequest(ChangeRequestStaging changeRequestStaging) { if (changeRequestStaging == null) { return; } throw new NotImplementedException(); }
public async Task <ChangeRequestStaging> UpdateChangeRequestStatusAsync(long changeRequestId) { ChangeRequestStaging changeRequestStaging = await this.ChangeRequestStagingRepositoryService.FindAsync(changeRequestId); changeRequestStaging.Status = ChangeRequestStatus.Approved; this.ChangeRequestStagingRepositoryService.Update(changeRequestStaging); return(changeRequestStaging); }
public async Task SaveAttachmentsAsync(List <AttachmentsStaging> attachmentsStaging, ChangeRequestStaging changeRequestStaging) { if (attachmentsStaging != null && attachmentsStaging.Count > 0) { var folderPath = GetFolderPath(changeRequestStaging.Id); foreach (var attachment in attachmentsStaging) { if (attachment.FileStatus == FileStatus.Deleted) { continue; } await SaveFileToTempLocation(attachment); } changeRequestStaging.AttachmentsStagings = changeRequestStaging.AttachmentsStagings ?? new List <AttachmentsStaging>(); foreach (var attachment in attachmentsStaging) { if (attachment.FileStatus == FileStatus.Deleted) { await _azureFileStorageRepositoryService.DeleteAsync(attachment.AzureContainerName, attachment.FileName, attachment.DirectoryPath); if (attachment.AttachmentId > 0) { // note: remove from staging table. await this.AttachmentStagingBusinessService.RemoveAsync(attachment.AttachmentId); } continue; } var newUri = await MoveFileFromTempLocationToPermanent(attachment.AzureContainerName, _containerName, attachment.FileName, folderPath); attachment.DirectoryPath = folderPath; attachment.AzureContainerName = _containerName; attachment.ChangeRequestId = changeRequestStaging.Id; this.AttachmentStagingBusinessService.Add(attachment); } } await this.AttachmentStagingBusinessService.SaveChangesAsync(); // note: saveChangesAsync() will be performed on repective method call. //await this._vcdbUnitOfWork.SaveChangesAsync(); }
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; } }
private ChangeRequestStore MapToChangeRequestStore(ChangeRequestStaging staging) { ChangeRequestStore store = new ChangeRequestStore() { Id = staging.Id, EntityId = staging.EntityId, ChangeRequestTypeId = staging.ChangeRequestTypeId, TaskControllerId = staging.TaskControllerId, Entity = staging.Entity, ChangeType = staging.ChangeType, Status = staging.Status, RequestedBy = staging.RequestedBy, RequestedDateTime = staging.CreatedDateTime // // note: requested on store equals created on staging }; // map item List <ChangeRequestItem> storeItems = staging.ChangeRequestItemStagings?.Select(item => new ChangeRequestItem() { ChangeRequestItemId = item.Id, ChangeRequestId = item.ChangeRequestId, EntityId = item.EntityId, Entity = item.Entity, EntityFullName = "", Payload = item.Payload, ExistingPayload = item.ExistingPayload, // existing payload ChangeType = item.ChangeType, CreatedDateTime = item.CreatedDateTime }).ToList(); // map comment List <Comments> comments = staging.CommentsStagings?.Select(item => new Comments() { Id = item.Id, ChangeRequestId = item.ChangeRequestId, Comment = item.Comment, AddedBy = item.AddedBy, CreatedDatetime = item.CreatedDatetime }).ToList(); // map attachment List <Attachments> attachments = staging.AttachmentsStagings?.Select(item => new Attachments() { AttachmentId = item.AttachmentId, ChangeRequestId = item.ChangeRequestId, DirectoryPath = item.DirectoryPath, FileName = item.FileName, FileExtension = item.FileExtension, AttachedBy = item.AttachedBy, CreatedDateTime = item.CreatedDateTime, AzureContainerName = item.AzureContainerName, ContentType = item.ContentType, FileSize = item.FileSize }).ToList(); List <ChangeRequestAssignment> assignments = staging.ChangeRequestAssignmentStagings?.Select(item => new ChangeRequestAssignment() { Id = item.Id, ChangeRequestId = item.ChangeRequestId, AssignedByUserId = item.AssignedByUserId, AssignedToUserId = item.AssignedToUserId, AssignedToRoleId = item.AssignedToRoleId, CreatedDateTime = item.CreatedDateTime, Comments = item.Comments }).ToList(); List <Likes> likes = staging.LikesStagings?.Select(item => new Likes() { Id = item.Id, ChangeRequestId = item.ChangeRequestId, LikeStatus = item.LikeStatus, LikedBy = item.LikedBy, UpdatedDatetime = item.UpdatedDatetime, CreatedDatetime = item.CreatedDatetime }).ToList(); // todo: map taskcontroller // fill up children/ details store.ChangeRequestItems = storeItems; store.Comments = comments; store.Attachments = attachments; store.ChangeRequestAssignments = assignments; store.Likes = likes; // todo: fill taskcontoller return(store); }