Exemple #1
0
        public string UpdateDescription(int boardId, int cardId, string description)
        {
            if (!User.CheckSecurity(boardId))
            {
                return(AccessDenied());
            }

            //check description for malicious input
            if (Malicious.IsMalicious(description, Malicious.InputType.TextOnly) == true)
            {
                return(Error());
            }

            var query = new Query.Cards();

            try
            {
                query.UpdateDescription(boardId, cardId, description);
                return(GetCard(boardId, cardId));
            }
            catch (Exception)
            {
                return(Error());
            }
        }
Exemple #2
0
        public string GetCard(int boardId, int cardId)
        {
            var query = new Query.Cards();
            var card  = query.GetDetails(boardId, cardId);

            return(GetCard(boardId, card));
        }
Exemple #3
0
        public static Query.Models.Card Create(int boardId, int listId, string name, string description = "", DateTime?dateDue = null, string colors = "")
        {
            var query = new Query.Cards();
            var card  = new Query.Models.Card()
            {
                boardId     = boardId,
                listId      = listId,
                name        = name,
                colors      = colors,
                description = description,
                datedue     = dateDue,
                datecreated = DateTime.Now
            };

            try
            {
                var id = query.Create(card);
                card.cardId = id;
                return(card);
            }
            catch (ServiceErrorException)
            {
                throw new ServiceErrorException("Error creating new card");
            }
        }
Exemple #4
0
        public string Move(int boardId, int listId, int cardId, int[] cardIds)
        {
            if (!User.CheckSecurity(boardId))
            {
                return(AccessDenied());
            }
            var query = new Query.Cards();

            query.Move(boardId, listId, cardId, cardIds);
            return(Success());
        }
Exemple #5
0
        public string LoadList(int listId)
        {
            var query = new Query.Lists();
            var list  = query.GetDetails(listId);

            if (!User.CheckSecurity(list.boardId))
            {
                return(AccessDenied());
            }
            var cards = new Query.Cards();

            return(Common.Platform.List.Kanban.RenderList(list, cards.GetList(list.boardId, listId, 1, 100)));
        }
Exemple #6
0
        public string Archive(int boardId, int cardId)
        {
            if (!User.CheckSecurity(boardId))
            {
                return(AccessDenied());
            }

            var query = new Query.Cards();

            try
            {
                query.Archive(boardId, cardId);
            }
            catch (Exception) {
                return(Error());
            }
            return(Success());
        }
Exemple #7
0
        public string Restore(int boardId, int cardId)
        {
            if (!User.CheckSecurity(boardId))
            {
                return(AccessDenied());
            }

            var query = new Query.Cards();

            try
            {
                query.Restore(boardId, cardId);
                return(GetCard(boardId, cardId));
            }
            catch (Exception)
            {
                return(Error());
            }
        }
Exemple #8
0
        public static Tuple <Query.Models.Card, string> Details(int boardId, int cardId)
        {
            Server Server = Server.Instance;
            var    query  = new Query.Cards();

            try
            {
                var card     = query.GetDetails(boardId, cardId);
                var scaffold = new Scaffold("/Views/Card/Kanban/details.html", Server.Scaffold);
                scaffold.Data["list-name"]       = card.listName;
                scaffold.Data["description"]     = card.description;
                scaffold.Data["no-description"]  = card.description.Length > 0 ? "hide" : "";
                scaffold.Data["has-description"] = card.description.Length <= 0 ? "hide" : "";
                scaffold.Data["archive-class"]   = card.archived ? "hide" : "";
                scaffold.Data["restore-class"]   = card.archived ? "" : "hide";
                scaffold.Data["delete-class"]    = card.archived ? "" : "hide";
                return(new Tuple <Query.Models.Card, string>(card, scaffold.Render()));
            }
            catch (Exception)
            {
                throw new ServiceErrorException("Error loading card details");
            }
        }
Exemple #9
0
        public override string Render(string[] path, string body = "", object metadata = null)
        {
            if (!CheckSecurity())
            {
                return(AccessDenied());
            }                                                //check security

            if (context.Request.QueryString.Value.Contains("?upload"))
            {
                //uploaded json file
                var files = context.Request.Form.Files;
                if (files.Count > 0)
                {
                    Models.Trello.Board board = null;
                    try
                    {
                        var ms = new MemoryStream();
                        files[0].CopyTo(ms);
                        ms.Position = 0;
                        var sr  = new StreamReader(ms);
                        var txt = sr.ReadToEnd();

                        board = (Models.Trello.Board)Serializer.ReadObject(txt.ToString(), typeof(Models.Trello.Board));
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.StackTrace);
                    }

                    if (board != null)
                    {
                        //show success page in iframe
                        var scaffold = new Scaffold("/Views/Import/Trello/success.html", Server.Scaffold);
                        scaffold.Data["name"] = board.name;

                        //import board
                        var boards    = new Query.Boards();
                        var lists     = new Query.Lists();
                        var cards     = new Query.Cards();
                        var merge     = context.Request.QueryString.Value.Contains("merge");
                        var boardType = context.Request.Query.ContainsKey("type") ? int.Parse(context.Request.Query["type"]) : 0;
                        var sort      = 0;
                        var sortCard  = 0;
                        var bgColor   = board.prefs.backgroundColor != null ? board.prefs.backgroundColor : board.prefs.backgroundBottomColor;
                        if (bgColor == null)
                        {
                            bgColor = board.prefs.backgroundTopColor;
                        }
                        var boardId = boards.Import(new Query.Models.Board()
                        {
                            name         = board.name,
                            archived     = board.closed,
                            color        = bgColor,
                            datecreated  = board.actions.Last().date,
                            lastmodified = board.dateLastActivity,
                            ownerId      = User.userId,
                            favorite     = board.pinned,
                            security     = (short)(board.prefs.permissionLevel == "private" ? 1 : 0),
                            type         = (Query.Models.Board.BoardType)boardType
                        }, User.userId, merge);

                        if (!Utility.Objects.IsEmpty(boardId))
                        {
                            //import each list
                            sort = 0;
                            board.lists.ForEach((list) =>
                            {
                                if (list.closed == false)
                                {
                                    var listId = lists.Import(new Query.Models.List()
                                    {
                                        boardId = boardId,
                                        name    = list.name,
                                        sort    = sort
                                    }, merge);

                                    //import cards for each list
                                    sortCard = 0;
                                    board.cards.FindAll((c) => c.idList == list.id).ForEach((card) =>
                                    {
                                        if (card.closed == false)
                                        {
                                            var cardDate = board.actions.FindLast((a) => a.data != null ? (a.data.card != null ? (a.data.card.id != null ? a.data.card.id == card.id : false) : false) : false);
                                            cards.Import(new Query.Models.Card()
                                            {
                                                boardId     = boardId,
                                                archived    = card.closed,
                                                colors      = string.Join(",", card.labels.Select((a) => a.color).ToArray()),
                                                datecreated = cardDate != null ? cardDate.date : DateTime.Now,
                                                datedue     = card.due,
                                                description = card.desc,
                                                listId      = listId,
                                                name        = card.name,
                                                sort        = sortCard,
                                                type        = 0
                                            }, merge);

                                            //import checklists for each card
                                            sortCard++;
                                        }
                                    });
                                    sort++;
                                }
                            });
                        }

                        return(scaffold.Render());
                    }
                    else
                    {
                        return("Could not parse json file correctly");
                    }
                }

                //show upload form in iframe
                return(Server.LoadFileFromCache("/Views/Import/Trello/trello.html"));
            }
            else
            {
                //show upload form in iframe
                return(Server.LoadFileFromCache("/Views/Import/Trello/trello.html"));
            }
        }