Ejemplo n.º 1
0
        public BasicCommentDTO InsertComment(string username, CreateCommentDTO dto)
        {
            Comment         comment    = CreateCommentDTO.FromDTO(dto);
            BasicCommentDTO commentDTO = null;

            using (UnitOfWork uw = new UnitOfWork())
            {
                Card card = uw.CardRepository.GetById(dto.CardId);
                User user = uw.UserRepository.GetUserByUsername(username);
                if (card != null && user != null)
                {
                    comment.Card = card;
                    comment.User = user;
                    uw.CommentRepository.Insert(comment);

                    if (uw.Save())
                    {
                        NotificationService notif = new NotificationService();
                        notif.CreateChangeNotification(new CreateNotificationDTO()
                        {
                            CardId           = dto.CardId,
                            UserId           = user.UserId,
                            NotificationType = NotificationType.Change
                        });

                        commentDTO = new BasicCommentDTO(comment);
                        RabbitMQService.PublishToExchange(card.List.Board.ExchangeName,
                                                          new MessageContext(new CommentMessageStrategy(commentDTO, username)));

                        BoardNotificationService.ChangeBoardNotifications(card.List.Board.BoardId);
                    }
                }
            }
            return(commentDTO);
        }
Ejemplo n.º 2
0
        public BasicCardDTO InsertCard(string username, CreateCardDTO dto)
        {
            //if (!PermissionHelper.HasPermissionOnList(dto.ListId, userId))
            //{
            //    return 0;
            //}

            BasicCardDTO cardDto = null;

            using (UnitOfWork uw = new UnitOfWork())
            {
                CardList list = uw.CardListRepository.GetById(dto.ListId);
                User     user = uw.UserRepository.GetUserByUsername(username);

                Card card = CreateCardDTO.FromDTO(dto);

                if (user != null && list != null)
                {
                    card.User = user;
                    card.List = list;
                    uw.CardRepository.Insert(card);
                    if (uw.Save())
                    {
                        cardDto = new BasicCardDTO(card);
                        RabbitMQService.PublishToExchange(list.Board.ExchangeName,
                                                          new MessageContext(new CardMessageStrategy(cardDto, MessageType.Create, username)));

                        BoardNotificationService.ChangeBoardNotifications(list.Board.BoardId);
                    }
                }
            }
            return(cardDto);
        }
Ejemplo n.º 3
0
        public bool UpdateCardList(int cardlistId, UpdateCardListDTO cardListDTO, string username)
        {
            bool ret = false;

            using (UnitOfWork unit = new UnitOfWork())
            {
                CardList cardList = unit.CardListRepository.GetById(cardlistId);

                if (cardList != null)
                {
                    cardList.Name  = cardListDTO.Name;
                    cardList.Color = cardListDTO.Color;

                    unit.CardListRepository.Update(cardList);

                    ret = unit.Save();

                    if (ret)
                    {
                        BasicCardListDTO dto = new BasicCardListDTO(cardList);
                        RabbitMQService.PublishToExchange(cardList.Board.ExchangeName,
                                                          new MessageContext(new CardListMessageStrategy(dto, MessageType.Update, username)));

                        BoardNotificationService.ChangeBoardNotifications(cardList.Board.BoardId);
                    }
                }
            }

            return(ret);
        }
Ejemplo n.º 4
0
        public bool DeleteCard(int id)
        {
            bool success = false;

            using (UnitOfWork uw = new UnitOfWork())
            {
                Card card = uw.CardRepository.GetById(id);

                if (card != null)
                {
                    Board board = card.List.Board;
                    uw.CardRepository.Delete(id);
                    success = uw.Save();

                    if (success)
                    {
                        RabbitMQService.PublishToExchange(board.ExchangeName,
                                                          new MessageContext(new CardMessageStrategy(id)));

                        BoardNotificationService.ChangeBoardNotifications(board.BoardId);
                    }
                }
            }
            return(success);
        }
Ejemplo n.º 5
0
        public bool DeleteBoard(int id, string username)
        {
            bool ret = false;

            using (UnitOfWork unit = new UnitOfWork())
            {
                bool isAdmin = unit.PermissionRepository
                               .IsAdmin(id, username);

                if (isAdmin)
                {
                    List <User> users = unit.PermissionRepository
                                        .GetAllUsersWithPermissionOnBoard(id);

                    unit.BoardRepository.Delete(id);
                    ret = unit.Save();

                    if (ret)
                    {
                        foreach (var u in users)
                        {
                            RabbitMQService.PublishToExchange(u.ExchangeName,
                                                              new MessageContext(new BoardMessageStrategy(id)));
                        }
                    }
                }
            }

            return(ret);
        }
Ejemplo n.º 6
0
        public BasicCardListDTO InsertCardList(CreateCardListDTO cardListDto, string username)
        {
            //if (!PermissionHelper.HasPermissionOnBoard(cardListDto.BoardId, userId))
            //{
            //    return 0;
            //}

            BasicCardListDTO dto  = null;
            CardList         list = cardListDto.FromDTO();

            using (UnitOfWork unit = new UnitOfWork())
            {
                Board board = unit.BoardRepository.GetById(cardListDto.BoardId);

                if (board != null)
                {
                    list.Board = board;

                    unit.CardListRepository.Insert(list);
                    if (unit.Save())
                    {
                        dto = new BasicCardListDTO(list);
                        RabbitMQService.PublishToExchange(board.ExchangeName,
                                                          new MessageContext(new CardListMessageStrategy(dto, MessageType.Create, username)));

                        BoardNotificationService.ChangeBoardNotifications(board.BoardId);
                    }
                }
            }

            return(dto);
        }
Ejemplo n.º 7
0
        public bool DeleteCardList(int id, string username)
        {
            bool ret = false;

            using (UnitOfWork unit = new UnitOfWork())
            {
                CardList cardlist = unit.CardListRepository.GetById(id);

                if (cardlist != null)
                {
                    Board  board        = cardlist.Board;
                    string exchangeName = board.ExchangeName;
                    int    boardId      = board.BoardId;

                    unit.CardListRepository.Delete(id);
                    ret = unit.Save();

                    if (ret)
                    {
                        RabbitMQService.PublishToExchange(exchangeName,
                                                          new MessageContext(new CardListMessageStrategy(id, username)));

                        BoardNotificationService.ChangeBoardNotifications(boardId);
                    }
                }
            }

            return(ret);
        }
Ejemplo n.º 8
0
        public ReadUserDTO AddUserBoardPermision(AddUserBoardPermisionDTO dto, string admin)
        {
            bool ret = false;

            using (UnitOfWork unit = new UnitOfWork())
            {
                bool       isAdmin = unit.PermissionRepository.IsAdmin(dto.BoardId, admin);
                Permission perm    = unit.PermissionRepository.GetPermissionByUsername(dto.BoardId, dto.Username);

                if (isAdmin && perm == null)
                {
                    Board b = unit.BoardRepository.GetById(dto.BoardId);
                    User  u = unit.UserRepository.GetUserByUsername(dto.Username);

                    if (u != null && b != null)
                    {
                        Permission p = new Permission()
                        {
                            Board = b,
                            User  = u
                        };

                        BoardNotification boardNotification = new BoardNotification()
                        {
                            Board = b,
                            User  = u
                        };

                        unit.PermissionRepository.Insert(p);
                        unit.BoardNotificationRepository.Insert(boardNotification);
                        ret = unit.Save();

                        if (ret)
                        {
                            RabbitMQService.PublishToExchange(u.ExchangeName,
                                                              new MessageContext(new BoardMessageStrategy(new BasicBoardDTO(b),
                                                                                                          MessageType.Create, admin)));

                            RabbitMQService.PublishToExchange(b.ExchangeName,
                                                              new MessageContext(new PermissionMessageStrategy(new ReadUserDTO(u),
                                                                                                               MessageType.Create, admin)));

                            return(new ReadUserDTO(u));
                        }
                    }
                }
            }

            return(null);
        }
Ejemplo n.º 9
0
        public bool CreateMoveNotification(CreateNotificationDTO notificationDTO)
        {
            bool ret = false;

            using (UnitOfWork uw = new UnitOfWork())
            {
                User user = uw.UserRepository.GetById(notificationDTO.UserId);
                Card card = uw.CardRepository.GetById(notificationDTO.CardId);

                if (user != null && card != null)
                {
                    Board b = card.List.Board;

                    List <User> users = uw.PermissionRepository
                                        .GetAllUsersWithPermissionOnBoard(b.BoardId);

                    List <Notification> notifs = new List <Notification>();

                    foreach (var u in users)
                    {
                        Notification obj = new Notification
                        {
                            CreatedByUser    = user,
                            Card             = card,
                            NotificationType = notificationDTO.NotificationType,
                            BelongsToUserId  = u.UserId
                        };

                        uw.NotificationRepository.Insert(obj);
                        notifs.Add(obj);
                    }

                    ret = uw.Save();

                    if (ret)
                    {
                        foreach (var n in notifs)
                        {
                            RabbitMQService.PublishToExchange(n.BelongsToUser.ExchangeName,
                                                              new MessageContext(new NotificationMessageStrategy(
                                                                                     new ReadNotificationDTO(n), MessageType.Move)));
                        }
                    }
                }
            }
            return(ret);
        }
        public static void ChangeBoardNotifications(int boardId)
        {
            using (UnitOfWork unit = new UnitOfWork())
            {
                List <BoardNotification> notifs = unit.BoardNotificationRepository
                                                  .GetBoardNotificationsByBoard(boardId);

                foreach (var n in notifs)
                {
                    n.IsRead = false;
                    unit.BoardNotificationRepository.Update(n);

                    RabbitMQService.PublishToExchange(n.User.ExchangeName,
                                                      new MessageContext(new BoardNotificationMessageStrategy(boardId)));
                }

                unit.Save();
            }
        }
Ejemplo n.º 11
0
        public bool DeletePermission(int boardId, string username, string admin)
        {
            bool ret = false;

            using (UnitOfWork unit = new UnitOfWork())
            {
                bool isAdmin = unit.PermissionRepository
                               .IsAdmin(boardId, admin);

                if (isAdmin && admin != username)
                {
                    Permission perm = unit.PermissionRepository.GetPermissionByUsername(boardId, username);

                    if (perm != null)
                    {
                        User user = perm.User;
                        unit.PermissionRepository.Delete(perm.PermissionId);
                        unit.BoardNotificationRepository.Delete(boardId, user.UserId);
                        unit.CardRepository.Delete(boardId, user);

                        ret = unit.Save();

                        if (ret)
                        {
                            RabbitMQService.PublishToExchange(user.ExchangeName,
                                                              new MessageContext(new BoardMessageStrategy(boardId)));

                            Board b = unit.BoardRepository.GetById(boardId);

                            RabbitMQService.PublishToExchange(b.ExchangeName,
                                                              new MessageContext(new PermissionMessageStrategy(new ReadUserDTO(user),
                                                                                                               MessageType.Delete, admin)));
                        }
                    }
                }
            }

            return(ret);
        }
Ejemplo n.º 12
0
        public bool UpdateCard(int cardId, string username, UpdateCardDTO dto)
        {
            bool succ = false;

            using (UnitOfWork uw = new UnitOfWork())
            {
                Card card = uw.CardRepository.GetById(cardId);
                User user = uw.UserRepository.GetUserByUsername(username);
                if (card != null && user != null)
                {
                    card.Name        = dto.Name;
                    card.Description = dto.Description;
                    card.DueDate     = dto.DueDate;
                    uw.CardRepository.Update(card);

                    NotificationService notif = new NotificationService();
                    notif.CreateChangeNotification(new CreateNotificationDTO()
                    {
                        CardId           = card.CardId,
                        UserId           = user.UserId,
                        NotificationType = NotificationType.Change
                    });

                    succ = uw.Save();

                    if (succ)
                    {
                        BasicCardDTO cardDto = new BasicCardDTO(card);
                        RabbitMQService.PublishToExchange(card.List.Board.ExchangeName,
                                                          new MessageContext(new CardMessageStrategy(cardDto, MessageType.Update, username)));

                        BoardNotificationService.ChangeBoardNotifications(card.List.Board.BoardId);
                    }
                }
            }
            return(succ);
        }
Ejemplo n.º 13
0
        public bool MoveCardToList(int cardId, int listId, string username)
        {
            bool succ = false;

            using (UnitOfWork uw = new UnitOfWork())
            {
                Card card = uw.CardRepository.GetById(cardId);
                if (card != null && card.List.ListId != listId)
                {
                    CardList list = uw.CardListRepository.GetById(listId);
                    User     user = uw.UserRepository.GetUserByUsername(username);
                    if (list != null && user != null)
                    {
                        list.Cards.Add(card);
                        uw.CardListRepository.Update(list);

                        if (uw.Save())
                        {
                            NotificationService notif = new NotificationService();
                            succ = notif.CreateMoveNotification(new CreateNotificationDTO()
                            {
                                CardId           = cardId,
                                UserId           = user.UserId,
                                NotificationType = NotificationType.Move
                            });

                            BasicCardDTO cardDto = new BasicCardDTO(card);
                            RabbitMQService.PublishToExchange(card.List.Board.ExchangeName,
                                                              new MessageContext(new CardMessageStrategy(cardDto, MessageType.Move, username)));

                            BoardNotificationService.ChangeBoardNotifications(card.List.Board.BoardId);
                        }
                    }
                }
            }
            return(succ);
        }
Ejemplo n.º 14
0
        public bool UpdateBoard(int boardId, UpdateBoardDTO boardDTO, string username)
        {
            bool ret = false;

            using (UnitOfWork unit = new UnitOfWork())
            {
                Board board = unit.BoardRepository.GetById(boardId);

                if (board != null)
                {
                    board.Name = boardDTO.Name;

                    unit.BoardRepository.Update(board);
                    ret = unit.Save();
                    if (ret)
                    {
                        BoardNotificationService.ChangeBoardNotifications(board.BoardId);

                        BasicBoardDTO dto = new BasicBoardDTO(board);

                        RabbitMQService.PublishToExchange(board.ExchangeName,
                                                          new MessageContext(new BoardMessageStrategy(dto, MessageType.Update, username)));

                        List <User> users = unit.PermissionRepository.GetAllUsersWithPermissionOnBoard(board.BoardId);

                        foreach (var u in users)
                        {
                            RabbitMQService.PublishToExchange(u.ExchangeName,
                                                              new MessageContext(new BoardMessageStrategy(dto, MessageType.UserUpdate, username)));
                        }
                    }
                }
            }

            return(ret);
        }