Example #1
0
        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));
        }
Example #2
0
 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));
        }
Example #5
0
        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));
        }
Example #6
0
        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));
        }
Example #7
0
    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());
    }
Example #8
0
        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));
        }