public void Close(CloseTicketCommand command) { command.Validate(); if (AddNotifications(command)) { return; } Ticket ticket = _ticketRepository.GetById(command.TicketId); if (NotifyNullTicket(ticket) || NotifyCantAccessTicket(ticket)) { return; } ticket.Close(); if (AddNotifications(ticket)) { return; } _ticketRepository.Update(ticket); if (Commit()) { PublishLocal(new TicketClosedEvent(ticket.Id)); } }