public async Task <BuildHistoryDTO> ChangeStatus(StatusChangeDto statusChange) { // TODO add checking var buildHistory = Context.BuildHistories.Include(bh => bh.Project).FirstOrDefault(bh => bh.Id == statusChange.BuildHistoryId); if (buildHistory != null) { buildHistory.BuildStatus = statusChange.Status; if (statusChange.Status != BuildStatus.InProgress) { buildHistory.BuildAt = statusChange.Time; buildHistory.Duration = (buildHistory.BuildAt - buildHistory.StartedAt).Value.Milliseconds; } await Context.SaveChangesAsync(); if (statusChange.Status != BuildStatus.InProgress) { await _notificationsService.Create(new NewNotificationDTO { UserId = buildHistory.PerformerId, Message = $"{StatusToNotificationMessage(buildHistory, statusChange)}", Type = StatusToNotificationType(statusChange), Date = DateTime.Now, ItemId = statusChange.BuildHistoryId }); } } return(await GetBuildById(statusChange.BuildHistoryId)); }
private static NotificationType StatusToNotificationType(StatusChangeDto statusChange) { return(statusChange.Status switch { BuildStatus.Error => NotificationType.BuildErrored, BuildStatus.Canceled => NotificationType.BuildCanceled, BuildStatus.Failure => NotificationType.BuildFailed, BuildStatus.Success => NotificationType.BuildSucceeded, BuildStatus.Pending => NotificationType.Information, });
private void SendBuildStatus(BuildStatus status, int buildHistoryId) { var statusChange = new StatusChangeDto { Time = DateTime.Now, Status = status, BuildHistoryId = buildHistoryId }; _buildStatusesProducer.Send(JsonConvert.SerializeObject(statusChange)); }
private void SendBuildStatus(BuildStatus status, int buildHistoryId, int?userId) { var statusChange = new StatusChangeDto { Time = DateTime.Now, Status = status, BuildHistoryId = buildHistoryId, UserId = userId.GetValueOrDefault(31) // replace with user id's taken from the project if run from git }; _buildStatusesProducer.Send(JsonConvert.SerializeObject(statusChange)); }
public async Task <BuildHistoryDTO> ChangeStatus(StatusChangeDto statusChange) { // TODO add checking var buildHistory = Context.BuildHistories.Include(bh => bh.Project) .FirstOrDefault(bh => bh.Id == statusChange.BuildHistoryId); if (buildHistory != null) { buildHistory.BuildStatus = statusChange.Status; if (statusChange.Status != BuildStatus.InProgress) { buildHistory.BuildAt = statusChange.Time; buildHistory.Duration = (buildHistory.BuildAt - buildHistory.StartedAt).Value.Milliseconds; } await Context.SaveChangesAsync(); if (statusChange.Status != BuildStatus.InProgress) { await _notificationsService.Create(new NewNotificationDTO { UserId = buildHistory.PerformerId, Message = $"{StatusToNotificationMessage(buildHistory, statusChange)}", Type = StatusToNotificationType(statusChange), Date = DateTime.Now, ItemId = statusChange.BuildHistoryId }); var teamMembers = await Context.ProjectGroups.AsNoTracking() .Where(pg => pg.ProjectId == buildHistory.ProjectId) .Include(pg => pg.Group) .ThenInclude(g => g.TeamMembers) .ThenInclude(tm => tm.User).AsNoTracking() .SelectMany(pg => pg.Group.TeamMembers) .ToListAsync(); foreach (var member in teamMembers.Where(tm => tm.IsAccepted && tm.UserId != buildHistory.PerformerId)) { await _notificationsService.Create(new NewNotificationDTO { UserId = member.UserId, Message = $"{StatusToNotificationMessage(buildHistory, statusChange)}", Type = StatusToNotificationType(statusChange), Date = DateTime.Now, ItemId = statusChange.BuildHistoryId }); } } } return(await GetBuildById(statusChange.BuildHistoryId)); }
public IActionResult Post(StatusChangeDto statusChange) { if (statusChange.passwd != Functions.Settings.ControllerActionsPassword) { return(BadRequest("Senha incorreta ou não informada")); } else if (statusChange.Activate == null) { return(BadRequest("Status não informado")); } Functions.Settings.TelegramBotActivated = (bool)statusChange.Activate; return(Ok(Functions.Settings.TelegramBotActivated)); }
public async Task <IActionResult> SetStatusRejectedAsync(int id, StatusChangeDto input) { // Act. InquiryFull inquiry = await _inquiryRepository.GetByIdAsync(id); Organization organization = await _organizationRepository.GetByIdAsync(_appContext.TenantId); User reviewer = await _userRepository.GetByIdAsync(inquiry.Attribution.Reviewer.Value); User creator = await _userRepository.GetByIdAsync(inquiry.Attribution.Creator); // Transition. inquiry.State.TransitionToRejected(); // Act. await _inquiryRepository.SetAuditStatusAsync(inquiry.Id, inquiry); string subject = $"FunderMaps - Rapportage afgekeurd"; object header = new { Title = subject, Preheader = "Rapportage is afgekeurd." }; string footer = "Dit bericht wordt verstuurd wanneer een rapportage is afgekeurd."; await _notifyService.NotifyAsync(new() { Recipients = new List <string> { creator.Email }, Subject = subject, Template = "InquiryRejected", Items = new Dictionary <string, object> { { "header", header }, { "footer", footer }, { "reviewer", reviewer.ToString() }, { "organization", organization.ToString() }, { "inquiry", inquiry }, { "message", input.Message }, { "redirect_link", $"{Request.Scheme}://{Request.Host}/inquiry/{inquiry.Id}" }, }, }); // Return. return(NoContent()); }
public async Task <BuildHistoryDTO> ChangeStatus(StatusChangeDto statusChange) { // TODO add checking var buildHistory = await Context.BuildHistories.FindAsync(statusChange.BuildHistoryId); if (buildHistory != null) { buildHistory.BuildStatus = statusChange.Status; if (statusChange.Status != BuildStatus.InProgress) { buildHistory.BuildAt = DateTime.Now; buildHistory.Duration = (buildHistory.BuildAt - buildHistory.StartedAt).Value.Milliseconds; } await Context.SaveChangesAsync(); } return(await GetBuildById(statusChange.BuildHistoryId)); }