public void SaveUserMainTreeTransformMatrix()
        {
            using (var db = new DAL.DbContext())
            {
                try
                {
                    int id = int.Parse(this.Request.Headers.GetValues("id").First());

                    UserTree userTree = db.UserTrees.Find(id);
                    userTree.TransformMatrix = this.Request.Headers.GetValues("matrix").First();

                    db.Entry(userTree).State = EntityState.Modified;
                    db.SaveChanges();
                }catch (Exception e)
                {
                    db.Errors.Add(new Error
                    {
                        Message    = e.Message,
                        StackTrace = e.StackTrace,
                        DateThrow  = DateTime.Now
                    });
                    db.SaveChanges();
                }
            }
        }
Beispiel #2
0
        public MessageExplorer()
        {
            tree = new UserTree
            {
                Name     = "tree",
                ReadOnly = false,
                Text     = "User tree",
                UserKeys = UserTreeKeys.Department | UserTreeKeys.Position | UserTreeKeys.User | UserTreeKeys.Access | UserTreeKeys.Current
            };
            tree.CellDoubleClick         += TreeCellDoubleClick;
            tree.ListInfo.HotTrackingCell = false;

            Name = "MessageExplorer";
            Text = "Messanger";

            PackStart(tree, true, true);

            Localize();

            if (MessageAddress.DBTable != null)
            {
                MessageAddress.DBTable.DefaultView.CollectionChanged += OnListChanged;
            }
            SynchMessage();
        }
        public void SaveUserMainTree([FromBody] ClassWithTreeHtml treeClass)
        {
            int id = -1;

            try
            {
                using (var db = new DAL.DbContext())
                {
                    id = int.Parse(this.Request.Headers.GetValues("id").First());

                    UserTree userTree = db.UserTrees.Find(id);
                    userTree.TreeHtmlCode = treeClass.TreeHtml;

                    db.Entry(userTree).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }catch (Exception e)
            {
                DAL.DbContext db = new DAL.DbContext();
                db.Errors.Add(new Error {
                    DateThrow = DateTime.Now, Message = "Błąd przy zapisie drzewa o ID:" + id + "/ SaveUSerMainTree() HtmlBuilderControllerAPI - " + e.Message, StackTrace = e.StackTrace
                });
                db.SaveChanges();
            }
        }
Beispiel #4
0
        private void LoadUserTrees()
        {
            try
            {
                int lastSelectedUserID = this.SelectedUserID;

                this.comboUserID.ComboBox.DataSource = this.userAPIs.GetUserIndexes(this.comboActiveOption.SelectedIndex == 0 ? GlobalEnums.ActiveOption.Active : GlobalEnums.ActiveOption.Both);

                IList <UserTree> userTrees = this.userAPIs.GetUserTrees(this.comboActiveOption.SelectedIndex == 0 ? GlobalEnums.ActiveOption.Active : GlobalEnums.ActiveOption.Both);
                this.treeUserID.DataSource = new BindingSource(userTrees, "");
                this.treeUserID.ExpandAll();

                if (this.SelectedUserID != lastSelectedUserID)
                { //OPTION: TRY TO KEEP LAST SelectedUserID
                    UserTree userTree = userTrees.FirstOrDefault(w => w.PrimaryID == lastSelectedUserID);
                    if (userTree != null)
                    {
                        this.treeUserID.SelectObject(userTree);
                    }
                }
            }
            catch (Exception exception)
            {
                ExceptionHandlers.ShowExceptionMessageBox(this, exception);
            }
        }
Beispiel #5
0
        public void CreateUser(string userName, string pass, int numChars, int numSpecChars)
        {
            UserTree ut   = new UserTree(userName, pass, numChars, numSpecChars);
            Dossier  root = ut.Racine;

            root.Dossiers.Add(new Dossier("Applications", "", "Mots de passes des applications"));
            root.Dossiers.Add(new Dossier("Internet", "", "Mots de passes des sites internet"));
            root.Dossiers.Add(new Dossier("Machines", "", "Mots de passes des différentes machines"));
            userData = ut;
            Save();
        }
Beispiel #6
0
        public void save(UserTree user)
        {
            //On crée une instance de XmlSerializer dans lequel on lui spécifie le type de l'objet à sérialiser
            XmlSerializer serilizer = new XmlSerializer(typeof(UserTree));

            //Création d'un Stream Writer qui permet d'écrire dans un fichier. On lui spécifie le chemin.
            using (StreamWriter stream = new StreamWriter(getFileName(Environment.UserName), false))
            {
                //On sérialise en spécifiant le flux d'écriture et l'objet à sérialiser.
                serilizer.Serialize(stream, user);
            }
        }
Beispiel #7
0
        private List <UserTree> process2TreeModel(List <DepartmentManageModel> source, UserTree curRootNode, List <FrontUserDto> userlist)
        {
            List <UserTree> resultlist = new List <UserTree>();

            if (source != null && source.Count() > 0)//出口1
            {
                if (curRootNode == null)
                {
                    return(resultlist);//出口2
                }

                //当前节点的直接子节点list
                IEnumerable <DepartmentManageModel> sublist = source.Where(m => m.ParentID == Convert.ToInt32(curRootNode.id));
                if (sublist == null || sublist.Count() == 0)
                {
                    return(resultlist);
                }
                // var pmodel=sublist.FirstOrDefault();

                foreach (var dep in sublist)//出口3
                {
                    UserTree t = new UserTree()
                    {
                        id   = dep.DepartmentID.ToString(),
                        text = dep.Name,
                        type = 0
                    };
                    t.children = new List <UserTree>();
                    t.children = process2TreeModel(source, t, userlist);
                    var result = userlist.Where(u => u.DepartmentID == Convert.ToInt32(t.id));
                    if (result.Count() > 0)
                    {
                        foreach (var u in result)
                        {
                            t.children.Add(new UserTree()
                            {
                                id       = u.UserID,
                                text     = u.Name,
                                type     = 1,
                                iconCls  = "icon-user",
                                children = new List <UserTree>()
                            });
                        }
                    }
                    curRootNode.children.Add(t);
                }
                return(curRootNode.children);
            }
            return(new List <UserTree>());
        }
Beispiel #8
0
 public void save(UserTree user)
 {
     using (Stream stream = File.Open(getFileName(Environment.UserName), FileMode.Create))
     {
         using (RijndaelManaged algo = new RijndaelManaged())
         {
             using (CryptoStream encryptedFile = new CryptoStream(stream, algo.CreateEncryptor(Key, IV), CryptoStreamMode.Write))
             {
                 BinaryFormatter formater = new BinaryFormatter();
                 formater.Serialize(encryptedFile, user);
             }
         }
     }
 }
Beispiel #9
0
        public UserTree load(string userName)
        {
            //On crée une instance de XmlSerializer dans lequel on lui spécifie le type
            XmlSerializer serializer = new XmlSerializer(typeof(UserTree));

            //Création d'un StreamReader qui permet de lire un fichier. On lui spécifie le chemin.
            using (StreamReader stream = new StreamReader(getFileName(userName)))
            {
                //On obtient une instance de l'objet désérialisé.
                UserTree user = (UserTree)serializer.Deserialize(stream);
                //On ferme le flux en tout temps !!!
                return(user);
            }
        }
Beispiel #10
0
 private int?getSelectedUserID()
 {
     if (this.treeUserID.SelectedObject != null)
     {
         UserTree userTree = (UserTree)this.treeUserID.SelectedObject;
         if (userTree != null && userTree.ParameterName == "UserID")
         {
             return(userTree.PrimaryID);
         }
         else
         {
             return(null);
         }
     }
     else
     {
         return(null);
     }
 }
        public HtmlTreeModel GetUserTree()
        {
            HtmlTreeModel htm = new HtmlTreeModel();

            try
            {
                int id = int.Parse(this.Request.Headers.GetValues("tid").First()); // id drzewa które chcemy pobrać

                using (var db = new DAL.DbContext())
                {
                    UserTree ut = db.UserTrees.Find(id);
                    htm.HtmlTree = ut.TreeHtmlCode;
                    htm.Tid      = ut.UserTreeID;

                    if (ut.UserTreeNodeID == null) //korzeń główny to userid
                    {
                        htm.Rootid       = ut.UserID;
                        htm.Mainuserroot = 1;
                    }
                    else
                    {
                        htm.Rootid       = (int)ut.UserTreeNodeID;
                        htm.Mainuserroot = 0;
                    }

                    htm.Ismaintree = ut.isMainTree == true ? 1 : 0;
                }
            }
            catch (Exception e)
            {
                DAL.DbContext db = new DAL.DbContext();
                db.Errors.Add(new Error
                {
                    Message    = "Błąd w pobieraniu drzewa po id -> najprawdopodobniej nie istnieje podany id, HtmlBuilderController metoda:GetUserTree() - " + e.Message,
                    StackTrace = e.StackTrace,
                    DateThrow  = DateTime.Now
                });
                db.SaveChanges();
            }

            return(htm);
        }
Beispiel #12
0
 public void Load(string userName)
 {
     userData = database.load(userName);
     path     = new List <Dossier>();
     path.Add(userData.Racine);
 }
Beispiel #13
0
        public DocumentFilterView()
        {
            toolFilter = new ToolSearchEntry()
            {
                Name = "Filter", FillWidth = true
            };

            fields = new LayoutList()
            {
                EditMode        = EditModes.ByClick,
                GenerateFields  = false,
                GenerateColumns = false,
                FieldInfo       = new LayoutFieldInfo(
                    new LayoutField {
                    Name = nameof(DocumentFilter.IsWork)
                },
                    new LayoutField {
                    Name = nameof(DocumentFilter.IsCurrent)
                },
                    new LayoutField {
                    Name = nameof(DocumentFilter.Number)
                },
                    new LayoutField {
                    Name = nameof(DocumentFilter.Title)
                },
                    new LayoutField {
                    Name = nameof(DocumentFilter.Customer)
                },
                    new LayoutField {
                    Name = nameof(DocumentFilter.DateType)
                },
                    new LayoutField {
                    Name = nameof(DocumentFilter.Date)
                }
                    ),
                Name = "Basic"
            };

            templates = new FlowTree
            {
                ShowListNode = false,
                FlowKeys     = FlowTreeKeys.Template,
                Name         = "Templates",
                FilterEntry  = toolFilter.Entry
            };
            templates.ListInfo.Columns.Add(
                new LayoutColumn
            {
                Name    = nameof(TableItemNode.Count),
                Width   = 35,
                Style   = GuiEnvironment.Theme["CellFar"],
                Invoker = countInvoker
            });
            works = new FlowTree
            {
                ShowListNode = false,
                FlowKeys     = FlowTreeKeys.Work | FlowTreeKeys.Stage,
                Name         = "Works_Stage"
            };
            //dates = new VBox();
            //dates.PackStart(dateType)

            users = new UserTree()
            {
                ShowListNode = false,
                UserKeys     = UserTreeKeys.Department | UserTreeKeys.Position | UserTreeKeys.User | UserTreeKeys.Current,
                Name         = "Users"
            };

            box = new GroupBox(
                new GroupBoxItem {
                Widget = templates, Name = "Document Type", FillWidth = true, FillHeight = true
            },
                //new GroupBoxItem { Widget = fields, Row = 1, Name = "Parameters", FillWidth = true, Height = 160, Autosize = false, Expand = false },
                new GroupBoxItem {
                Widget = works, Row = 2, Name = "Workflow & Stage", FillWidth = true, FillHeight = true, Expand = false
            },
                new GroupBoxItem {
                Widget = users, Row = 3, Name = "Staff", FillWidth = true, FillHeight = true, Expand = false
            })
            {
                Name = "Map"
            };

            PackStart(box, true, true);
            MinWidth = 330;

            var nodeSend = new TableItemNode()
            {
                Name = "Send",
                Tag  = new DocumentFilter()
                {
                    Staff    = (User)GuiEnvironment.User,
                    DateType = DocumentSearchDate.WorkEnd,
                    Date     = new DateInterval(DateTime.Today),
                    IsWork   = CheckedState.Unchecked
                }
            };

            GuiService.Localize(nodeSend, "DocumentWorker", nodeSend.Name);

            var nodeRecent = new TableItemNode()
            {
                Name = "Recent",
                Tag  = new DocumentFilter()
                {
                    Staff    = (User)GuiEnvironment.User,
                    DateType = DocumentSearchDate.WorkEnd,
                    Date     = new DateInterval(DateTime.Today)
                }
            };

            GuiService.Localize(nodeRecent, "DocumentWorker", nodeRecent.Name);

            var nodeSearch = new TableItemNode()
            {
                Name = "Search",
                Tag  = new DocumentFilter()
                {
                }
            };

            GuiService.Localize(nodeSearch, "DocumentWorker", nodeSearch.Name);

            Name = nameof(DocumentFilterView);
        }
Beispiel #14
0
        /// <summary>
        /// 获取所有部门转换成树形结构
        /// </summary>
        /// <returns></returns>
        public List <UserTree> GetDepartment(List <FrontUserDto> userlist)
        {
            var service = ML.BC.Infrastructure.Ioc.GetService <IEnterpriseDepartmentManagementService>();
            List <DepartmentDto> list = new List <DepartmentDto>();

            if (HasFunction(Functions.Root_SystemSetting_OrganizationManagement_ShowAll))
            {
                list = service.GetMyDepartment(BCSession.User.EnterpriseID);
            }
            else if (BCSession.User.DepartmentID.HasValue)
            {
                list = service.GetMyDepartment(BCSession.User.EnterpriseID, BCSession.User.DepartmentID);
            }
            if (list != null && list.Count > 0)
            {
                List <DepartmentManageModel> mylist = new List <DepartmentManageModel>();
                foreach (var l in list)
                {
                    if (l.Available)
                    {
                        DepartmentManageModel m = new DepartmentManageModel()
                        {
                            DepartmentID = l.DepartmentID,
                            Description  = l.Description,
                            _parentId    = l.ParentID,
                            Deleted      = l.Deleted,
                            Available    = l.Available,
                            EnterpriseID = l.EnterpriseID,
                            Name         = l.Name,
                            ParentID     = l.ParentID
                        };
                        mylist.Add(m);
                    }
                }
                mylist[0]._parentId = 0;    //不在根节点部门下的管理者不能显示
                List <UserTree> all = new List <UserTree>();

                var noDepartmentUser = userlist.Where(u => u.DepartmentID == null).ToList();
                foreach (var nouser in noDepartmentUser)
                {
                    all.Add(new UserTree()
                    {
                        id       = nouser.UserID,
                        text     = nouser.Name,
                        iconCls  = "icon-user",
                        type     = 1,
                        children = new List <UserTree>()
                    });
                }
                foreach (var rot in mylist)
                {
                    if (rot._parentId == 0)
                    {
                        UserTree root = new UserTree();
                        root.id       = rot.DepartmentID.ToString();
                        root.text     = rot.Name;
                        root.type     = 0;
                        root.children = new List <UserTree>();
                        root.children = process2TreeModel(mylist, root, userlist);
                        var res = userlist.Where(u => u.DepartmentID == Convert.ToInt32(root.id));
                        if (res.Count() > 0)
                        {
                            foreach (var u in res)
                            {
                                root.children.Add(new UserTree()
                                {
                                    id       = u.UserID,
                                    text     = u.Name,
                                    type     = 1,
                                    iconCls  = "icon-user",
                                    children = new List <UserTree>()
                                });
                            }
                        }
                        all.Add(root);
                    }
                }
                return(all);
            }
            else
            {
                return(new List <UserTree>());
            }
        }
        public HtmlTreeModel GetUserMainTree(string id, int mainuser) //mainuser - 0 - nie chcemy tworzenia drzewa jeżeli nie istnieje 1 - chcemy
        {
            HtmlTreeModel htm = new HtmlTreeModel();

            int id_result = -1;

            try
            {
                id_result = int.Parse(id);
            }catch (Exception e) { }


            using (var db = new DAL.DbContext())
            {
                try
                {
                    User user = db.Users.Find(id_result);
                    if (user != null)
                    {
                        var userTrees = db.UserTrees.Where(ut => ut.UserID == user.UserID);

                        if (userTrees != null && userTrees.Count() > 0) // user ma już drzewo - zwracamy które ma ustawione isMainTree na true
                        {
                            htm.HtmlTree = userTrees.Where(ut => ut.isMainTree == true).First().TreeHtmlCode;
                            htm.Tid      = userTrees.Where(ut => ut.isMainTree == true).First().UserTreeID;

                            return(htm);
                        }
                        else //pierwsze zalogowanie - użytkownik nie ma drzewa stworzonego
                        {
                            if (mainuser == 0)
                            {
                                return(htm);              // wartość na 0 nie chcemy tworzyć drzewa tylko pobrać jak jest jak nie to nic -- ExchangeTree
                            }
                            //data-have - czy dodany już ojciec/matka/partner
                            //data-mainuser - czy to ten co ma konto na stronce czy dodany jako węzeł 1-main, 0-dodany
                            string ageLabelX;
                            string dateBornX;
                            string dateDeadX;
                            string ageValueX;
                            if (user.LanguageID == 1)
                            {
                                ageLabelX = "147.5";
                                dateBornX = "170";
                                dateDeadX = "174";
                                ageValueX = "162";
                            }
                            else
                            {
                                ageLabelX = "145.5";
                                dateBornX = "170";
                                dateDeadX = "173";
                                ageValueX = "163";
                            }

                            htm.HtmlTree =
                                "<g class=\"tree-elements\" id=\"" + user.UserID + "\" onmousedown=\"mousedowntreeelement(evt)\" transform=\"matrix(1 0 0 1 0 0)\" data-mainuser=\"1\" data-haveRightLine=\"0\" data-haveLeftLine=\"0\" data-haveUpLine=\"1\">" +
                                "<rect class=\"tree-element-frames\" width=\"200\" height=\"100\" x=\"100\" y=\"50\" fill=\"white\" stroke=\"black\"/>" +
                                "<text class=\"tree-element-texts\" x=\"200\" y=\"65\" font-family=\"verdana\" font-size=\"12\" fill=\"blue\" alignment-baseline=\"middle\" text-anchor=\"middle\">" + user.NameSurname + "</text>" +

                                "<rect class=\"addparents\" width=\"180\" height=\"20\" x=\"110\" y=\"30\" fill=\"white\" stroke=\"#428bca\" visibility=\"hidden\" data-have=\"0\" onclick=\"addNewNodeToTreeClick(this)\"/>" +
                                "<text class=\"addparents-dbt\" x=\"200\" y=\"40\" font-family=\"verdana\" font-size=\"6\" fill=\"black\" alignment-baseline=\"middle\" text-anchor=\"middle\" visibility=\"hidden\" data-tag=\"20\" data-have=\"0\"></text>" +

                                "<rect class=\"addpartnerR\" width=\"20\" height=\"80\" x=\"300\" y=\"60\" fill=\"white\" stroke=\"#428bca\" visibility=\"hidden\" data-have=\"0\" onclick=\"addNewNodeToTreeClick(this)\"/>" +
                                "<text class=\"addpartnerR-dbt\" transform=\"rotate(90)\" x=\"100\" y=\"-310\" font-family=\"verdana\" font-size=\"6\" fill=\"black\" alignment-baseline=\"middle\" text-anchor=\"middle\" visibility=\"hidden\" data-tag=\"22\" data-have=\"0\"></text>" +

                                "<rect class=\"addpartnerL\" width=\"20\" height=\"80\" x=\"80\" y=\"60\" fill=\"white\" stroke=\"#428bca\" visibility=\"hidden\" data-have=\"0\" onclick=\"addNewNodeToTreeClick(this)\"/>" +
                                "<text class=\"addpartnerL-dbt\" transform=\"rotate(90)\" x=\"100\" y=\"-90\" font-family=\"verdana\" font-size=\"6\" fill=\"black\" alignment-baseline=\"middle\"text-anchor=\"middle\" visibility=\"hidden\" data-tag=\"23\" data-have=\"0\"></text>" +

                                "<rect class=\"addchildren\" width=\"180\" height=\"20\" x=\"110\" y=\"150\" fill=\"white\" stroke=\"#428bca\" visibility=\"hidden\" data-have=\"1\" onclick=\"addNewNodeToTreeClick(this)\"/>" +
                                "<text class=\"addchildren-dbt\" x=\"200\" y=\"160\" font-family=\"verdana\" font-size=\"6\" fill=\"black\" alignment-baseline=\"middle\" text-anchor=\"middle\" visibility=\"hidden\" data-tag=\"24\" data-have=\"1\"></text>" +

                                "<image class=\"nodeImage\" xlink:href=\"\" x=\"230\" y=\"80\" height=\"60\" width=\"60\"/>" +

                                "<text class=\"datebirthLabel-dbt\" x=\"138\" y=\"100\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\" data-tag=\"29\"></text>" +
                                "<text class=\"datedeadLabel-dbt\" x=\"138\" y=\"110\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\" data-tag=\"30\"></text>" +
                                "<text class=\"ageLabel-dbt\" x=\"" + ageLabelX + "\" y=\"120\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\" data-tag=\"31\"></text>" +
                                "<text class=\"maininfoLabel-dbt\" x=\"165\" y=\"86\" font-family=\"verdana\" font-size=\"6\" fill=\"black\" alignment-baseline=\"middle\" text-anchor=\"middle\" data-tag=\"32\"></text>" +

                                "<text class=\"datebirthValue\" x=\"" + dateBornX + "\" y=\"100\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\"></text>" +
                                "<text class=\"datedeadValue\" x=\"" + dateDeadX + "\" y=\"110\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\"></text>" +
                                "<text class=\"ageValue\" x=\"" + ageValueX + "\" y=\"120\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\"></text>" +

                                "<image class=\"copyImage\" xlink:href=\"\" x=\"102\" y=\"135\" height=\"13\" width=\"13\" visibility=\"hidden\" onclick=\"onClickCopy(this)\"/>" +
                                "<rect class=\"copyImageBorder\" x=\"102\" y=\"135\" height=\"13\" width=\"13\" fill=\"none\" stroke=\"#428bca\" stroke-width=\"0.2\" visibility=\"hidden\"/>" +

                                "<image class=\"otherpartnersImage\" xlink:href=\"\" x=\"102\" y=\"135\" height=\"13\" width=\"13\" visibility=\"hidden\" onclick=\"onClickOtherPartners(this)\"/>" +
                                "<rect class=\"otherpartnersImageBorder\" x=\"102\" y=\"135\" height=\"13\" width=\"13\" fill=\"none\" stroke=\"#428bca\" stroke-width=\"0.2\" visibility=\"hidden\"/>" +
                                "</g>";

                            UserTree newtree = new UserTree
                            {
                                isMainTree      = true,
                                TreeHtmlCode    = htm.HtmlTree,
                                UserID          = user.UserID,
                                User            = user,
                                TransformMatrix = "matrix(2 0 0 2 0 0)"
                            };
                            db.UserTrees.Add(newtree);
                            db.SaveChanges();

                            htm.Tid = newtree.UserTreeID;

                            return(htm);
                        }
                    }
                    else // nie znaleziono usera o podanym id
                    {
                        db.Errors.Add(new Error
                        {
                            Message    = "HtmlBuilderController - API - (GetUserMainTree) - user is null !! - sprawdź przekazywany id do metody przekazana wartość:" + id,
                            StackTrace = "HtmlBuilderController - API - (GetUserMainTree) - user is null !!",
                            DateThrow  = DateTime.Now
                        });
                        db.SaveChanges();

                        return(htm);
                    }
                }catch (Exception e) //
                {
                    db.Errors.Add(new Error
                    {
                        Message    = e.Message,
                        StackTrace = e.StackTrace,
                        DateThrow  = DateTime.Now
                    });
                    db.SaveChanges();
                    return(htm);
                }
            }
        }
        public async Task <HtmlTreeModel> BuildUserTree()
        {
            HtmlTreeModel htm = new HtmlTreeModel();

            try
            {
                User         user = null;
                UserTreeNode usertreenodecaller = null;                                             // ten węzeł na którym klikneliśmy dodaj kolejnego partnera
                UserTreeNode usertreenodenew    = null;                                             //partner obecnie tworzony jako nowy partner danej osoby

                int    id                = int.Parse(this.Request.Headers.GetValues("id").First()); //nid -> usertreenodeid węzeł dla którego jest stworzone drzewo
                int    mainuser          = int.Parse(this.Request.Headers.GetValues("mainuser").First());
                string namenew           = this.Request.Headers.GetValues("name").First();
                string surnamenew        = this.Request.Headers.GetValues("surname").First();
                string datebornnew       = this.Request.Headers.GetValues("dateborn").First();
                string datedeadnew       = this.Request.Headers.GetValues("datedead").First();
                string additionalinfonew = this.Request.Headers.GetValues("additionalinfo").First();
                int    withimage         = int.Parse(this.Request.Headers.GetValues("withimage").First());

                using (var db = new DAL.DbContext())
                {
                    //----
                    // wyszukiwanie czy poprawne dane
                    if (mainuser == 1) //tabela users
                    {
                        user = db.Users.Find(id);

                        //korzeń naszego drzewa
                        htm.Rootid            = user.UserID;
                        htm.Mainuserroot      = 1;
                        htm.NameSurnameCaller = user.NameSurname;

                        if (user == null) // błędne podane user id
                        {
                            return(new HtmlTreeModel());
                        }
                    }
                    else if (mainuser == 0) //mainuser - 0 - szukamy czy istnieje taki node o podanym id
                    {
                        usertreenodecaller = db.UserTreeNodes.Find(id);

                        //korzeń naszego drzewa zapisujemy id
                        htm.Rootid            = usertreenodecaller.UserTreeNodeID;
                        htm.Mainuserroot      = 0;
                        htm.NameSurnameCaller = usertreenodecaller.NameSurname;

                        if (usertreenodecaller == null) // błędny podany node id
                        {
                            return(new HtmlTreeModel());
                        }

                        user = db.UserTreesUserTreeNodes.Where(x => x.UserTreeNodeID == id).First().UserTree.User;

                        if (user == null) //usera nie ma wychodzimy -> każde drzewo/poddrzewo musi mieć przypisanego usera
                        {
                            return(new HtmlTreeModel());
                        }
                    }
                    //----


                    //------
                    //Wstawianie do bazy nowego noda
                    byte[] filebytes = null;
                    if (withimage == 1)
                    {
                        var provider = new MultipartMemoryStreamProvider();
                        await this.Request.Content.ReadAsMultipartAsync(provider);

                        filebytes = await provider.Contents[0].ReadAsByteArrayAsync();
                    }

                    DateTime?dateborn = null;
                    DateTime?datedead = null;

                    if (datebornnew != "") //podano date born
                    {
                        var tabDateborn = datebornnew.Split('-');
                        dateborn = new DateTime(int.Parse(tabDateborn[0]), int.Parse(tabDateborn[1]), int.Parse(tabDateborn[2]));
                    }
                    if (datedeadnew != "") //podano date death
                    {
                        var tabDatedead = datedeadnew.Split('-');
                        datedead = new DateTime(int.Parse(tabDatedead[0]), int.Parse(tabDatedead[1]), int.Parse(tabDatedead[2]));
                    }

                    usertreenodenew = new UserTreeNode
                    {
                        Name           = namenew,
                        Surname        = surnamenew,
                        DateBorn       = dateborn,
                        DateDead       = datedead,
                        AdditionalInfo = additionalinfonew,
                        Image          = filebytes,
                    };

                    db.UserTreeNodes.Add(usertreenodenew);
                    db.SaveChanges();
                    //-----


                    string ageLabelX;
                    string dateDeadX;
                    string ageValueX;
                    if (user.LanguageID == 1)
                    {
                        ageLabelX = "147";
                        dateDeadX = "174";
                        ageValueX = "162";
                    }
                    else
                    {
                        ageLabelX = "145";
                        dateDeadX = "173";
                        ageValueX = "163";
                    }

                    //html -- połączenie między węzłami + 2x węzły
                    htm.HtmlTree =
                        "<path  d=\"M300 100 Q360 250 420 100\" fill=\"transparent\" stroke=\"black\" data-left=\"" + id + "\" data-right=\"" + usertreenodenew.UserTreeNodeID + "\"/>" +        //przeliczone na stałe z myscripts.js tam dynamicznie
                        "<g class=\"tree-elements\" id=\"" + id + "\" onmousedown=\"mousedowntreeelement(evt)\" transform=\"matrix(1 0 0 1 0 0)\" data-mainuser=\"" + mainuser + "\" data-haveRightLine=\"1\" data-haveLeftLine=\"0\" data-haveUpLine=\"1\">" +
                        "<rect class=\"tree-element-frames\" width=\"200\" height=\"100\" x=\"100\" y=\"50\" fill=\"white\" stroke=\"black\"/>" +
                        "<text class=\"tree-element-texts\" x=\"200\" y=\"65\" font-family=\"verdana\" font-size=\"12\" fill=\"blue\" alignment-baseline=\"middle\" text-anchor=\"middle\"></text>" +

                        "<rect class=\"addparents\" width=\"180\" height=\"20\" x=\"110\" y=\"30\" fill=\"white\" stroke=\"#428bca\" visibility=\"hidden\" data-have=\"0\" onclick=\"addNewNodeToTreeClick(this)\"/>" +
                        "<text class=\"addparents-dbt\" x=\"200\" y=\"40\" font-family=\"verdana\" font-size=\"6\" fill=\"black\" alignment-baseline=\"middle\" text-anchor=\"middle\" visibility=\"hidden\" data-tag=\"20\" data-have=\"0\"></text>" +

                        "<rect class=\"addchildren\" width=\"180\" height=\"20\" x=\"110\" y=\"150\" fill=\"white\" stroke=\"#428bca\" visibility=\"hidden\" data-have=\"0\" onclick=\"addNewNodeToTreeClick(this)\"/>" +
                        "<text class=\"addchildren-dbt\" x=\"200\" y=\"160\" font-family=\"verdana\" font-size=\"6\" fill=\"black\" alignment-baseline=\"middle\" text-anchor=\"middle\" visibility=\"hidden\" data-tag=\"24\" data-have=\"0\"></text>" +

                        "<image class=\"nodeImage\" xlink:href=\"\" x=\"230\" y=\"80\" height=\"60\" width=\"60\"/>" +

                        "<text class=\"datebirthLabel-dbt\" x=\"138\" y=\"100\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\" data-tag=\"29\"></text>" +
                        "<text class=\"datedeadLabel-dbt\" x=\"138\" y=\"110\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\" data-tag=\"30\"></text>" +
                        "<text class=\"ageLabel-dbt\" x=\"" + ageLabelX + ".5\" y=\"120\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\" data-tag=\"31\"></text>" +
                        "<text class=\"maininfoLabel-dbt\" x=\"165\" y=\"86\" font-family=\"verdana\" font-size=\"6\" fill=\"black\" alignment-baseline=\"middle\" text-anchor=\"middle\" data-tag=\"32\"></text>" +

                        "<text class=\"datebirthValue\" x=\"170\" y=\"100\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\"></text>" +
                        "<text class=\"datedeadValue\" x=\"" + dateDeadX + "\" y=\"110\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\"></text>" +
                        "<text class=\"ageValue\" x=\"" + ageValueX + "\" y=\"120\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\"></text>";

                    if (mainuser == 0) // gdy nie mainuser -> mają być pola do edycji/usuwania/kopiowania/widoku innych partnerów
                    {
                        htm.HtmlTree +=
                            "<image class=\"editImage\" xlink:href=\"\" x=\"102\" y=\"135\" height=\"13\" width=\"13\" visibility=\"hidden\" onclick=\"onClickEdit(this)\"/>" +
                            "<rect class=\"editImageBorder\" x=\"102\" y=\"135\" height=\"13\" width=\"13\" fill=\"none\" stroke=\"#428bca\" stroke-width=\"0.2\" visibility=\"hidden\"/>" +
                            "<image class=\"trashImage\" xlink:href=\"\" x=\"120\" y=\"135\" height=\"13\" width=\"13\" visibility=\"hidden\" onclick=\"onClickDelete(this)\"/>" +
                            "<rect class=\"trashImageBorder\" x=\"120\" y=\"135\" height=\"13\" width=\"13\" fill=\"none\" stroke=\"#428bca\" stroke-width=\"0.2\" visibility=\"hidden\"/>" +
                            "<image class=\"copyImage\" xlink:href=\"\" x=\"102\" y=\"135\" height=\"13\" width=\"13\" visibility=\"hidden\" onclick=\"onClickCopy(this)\"/>" +
                            "<rect class=\"copyImageBorder\" x=\"102\" y=\"135\" height=\"13\" width=\"13\" fill=\"none\" stroke=\"#428bca\" stroke-width=\"0.2\" visibility=\"hidden\"/>" +
                            "<image class=\"otherpartnersImage\" xlink:href=\"\" x=\"138\" y=\"135\" height=\"13\" width=\"13\" visibility=\"hidden\" onclick=\"onClickOtherPartners(this)\"/>" +
                            "<rect class=\"otherpartnersImageBorder\" x=\"138\" y=\"135\" height=\"13\" width=\"13\" fill=\"none\" stroke=\"#428bca\" stroke-width=\"0.2\" visibility=\"hidden\"/>";
                    }
                    else if (mainuser == 1)
                    {
                        htm.HtmlTree +=
                            "<image class=\"copyImage\" xlink:href=\"\" x=\"102\" y=\"135\" height=\"13\" width=\"13\" visibility=\"hidden\" onclick=\"onClickCopy(this)\"/>" +
                            "<rect class=\"copyImageBorder\" x=\"102\" y=\"135\" height=\"13\" width=\"13\" fill=\"none\" stroke=\"#428bca\" stroke-width=\"0.2\" visibility=\"hidden\"/>" +
                            "<image class=\"otherpartnersImage\" xlink:href=\"\" x=\"102\" y=\"135\" height=\"13\" width=\"13\" visibility=\"hidden\" onclick=\"onClickOtherPartners(this)\"/>" +
                            "<rect class=\"otherpartnersImageBorder\" x=\"102\" y=\"135\" height=\"13\" width=\"13\" fill=\"none\" stroke=\"#428bca\" stroke-width=\"0.2\" visibility=\"hidden\"/>";
                    }

                    htm.HtmlTree +=
                        "</g>" +

                        //drugi nowy węzeł
                        "<g class=\"tree-elements\" id=\"" + usertreenodenew.UserTreeNodeID + "\" onmousedown=\"mousedowntreeelement(evt)\" transform=\"matrix(1 0 0 1 0 0)\" data-mainuser=\"0\" data-haveRightLine=\"0\" data-haveLeftLine=\"1\" data-haveUpLine=\"1\">" +
                        "<rect class=\"tree-element-frames\" width=\"200\" height=\"100\" x=\"420\" y=\"50\" fill=\"white\" stroke=\"black\"/>" +
                        "<text class=\"tree-element-texts\" x=\"520\" y=\"65\" font-family=\"verdana\" font-size=\"12\" fill=\"blue\" alignment-baseline=\"middle\" text-anchor=\"middle\"></text>" +

                        "<rect class=\"addparents\" width=\"180\" height=\"20\" x=\"430\" y=\"30\" fill=\"white\" stroke=\"#428bca\" visibility=\"hidden\" data-have=\"0\" onclick=\"addNewNodeToTreeClick(this)\"/>" +
                        "<text class=\"addparents-dbt\" x=\"520\" y=\"40\" font-family=\"verdana\" font-size=\"6\" fill=\"black\" alignment-baseline=\"middle\" text-anchor=\"middle\" visibility=\"hidden\" data-tag=\"20\" data-have=\"0\"></text>" +

                        "<rect class=\"addpartnerR\" width=\"20\" height=\"80\" x=\"620\" y=\"60\" fill=\"white\" stroke=\"#428bca\" visibility=\"hidden\" data-have=\"1\" onclick=\"addNewNodeToTreeClick(this)\"/>" +
                        "<text class=\"addpartnerR-dbt\" transform=\"rotate(90)\" x=\"100\" y=\"-630\" font-family=\"verdana\" font-size=\"6\" fill=\"black\" alignment-baseline=\"middle\" text-anchor=\"middle\" visibility=\"hidden\" data-tag=\"22\" data-have=\"1\"></text>" +

                        "<rect class=\"addpartnerL\" width=\"20\" height=\"80\" x=\"400\" y=\"60\" fill=\"white\" stroke=\"#428bca\" visibility=\"hidden\" data-have=\"1\" onclick=\"addNewNodeToTreeClick(this)\"/>" +
                        "<text class=\"addpartnerL-dbt\" transform=\"rotate(90)\" x=\"100\" y=\"-410\" font-family=\"verdana\" font-size=\"6\" fill=\"black\" alignment-baseline=\"middle\"text-anchor=\"middle\" visibility=\"hidden\" data-tag=\"23\" data-have=\"1\"></text>" +

                        "<rect class=\"addchildren\" width=\"180\" height=\"20\" x=\"430\" y=\"150\" fill=\"white\" stroke=\"#428bca\" visibility=\"hidden\" data-have=\"0\" onclick=\"addNewNodeToTreeClick(this)\"/>" +
                        "<text class=\"addchildren-dbt\" x=\"520\" y=\"160\" font-family=\"verdana\" font-size=\"6\" fill=\"black\" alignment-baseline=\"middle\" text-anchor=\"middle\" visibility=\"hidden\" data-tag=\"24\" data-have=\"0\"></text>" +

                        "<image class=\"nodeImage\" xlink:href=\"\" x=\"550\" y=\"80\" height=\"60\" width=\"60\"/>" +

                        "<text class=\"datebirthLabel-dbt\" x=\"458\" y=\"100\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\" data-tag=\"29\"></text>" +
                        "<text class=\"datedeadLabel-dbt\" x=\"458\" y=\"110\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\" data-tag=\"30\"></text>" +
                        "<text class=\"ageLabel-dbt\" x=\"" + (int.Parse(ageLabelX) + 320) + ".5\" y=\"120\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\" data-tag=\"31\"></text>" +
                        "<text class=\"maininfoLabel-dbt\" x=\"485\" y=\"86\" font-family=\"verdana\" font-size=\"6\" fill=\"black\" alignment-baseline=\"middle\" text-anchor=\"middle\" data-tag=\"32\"></text>" +

                        "<text class=\"datebirthValue\" x=\"490\" y=\"100\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\"></text>" +
                        "<text class=\"datedeadValue\" x=\"" + (int.Parse(dateDeadX) + 320) + "\" y=\"110\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\"></text>" +
                        "<text class=\"ageValue\" x=\"" + (int.Parse(ageValueX) + 320) + "\" y=\"120\" font-family=\"verdana\" font-size=\"5\" fill=\"grey\" alignment-baseline=\"middle\" text-anchor=\"middle\"></text>" +

                        //opcje edytuj/usuń/kopiuj/inni partnerzy
                        "<image class=\"editImage\" xlink:href=\"\" x=\"422\" y=\"135\" height=\"13\" width=\"13\" visibility=\"hidden\" onclick=\"onClickEdit(this)\"/>" +
                        "<rect class=\"editImageBorder\" x=\"422\" y=\"135\" height=\"13\" width=\"13\" fill=\"none\" stroke=\"#428bca\" stroke-width=\"0.2\" visibility=\"hidden\"/>" +
                        "<image class=\"trashImage\" xlink:href=\"\" x=\"440\" y=\"135\" height=\"13\" width=\"13\" visibility=\"hidden\" onclick=\"onClickDelete(this)\"/>" +
                        "<rect class=\"trashImageBorder\" x=\"440\" y=\"135\" height=\"13\" width=\"13\" fill=\"none\" stroke=\"#428bca\" stroke-width=\"0.2\" visibility=\"hidden\"/>" +
                        "<image class=\"copyImage\" xlink:href=\"\" x=\"422\" y=\"135\" height=\"13\" width=\"13\" visibility=\"hidden\" onclick=\"onClickCopy(this)\"/>" +
                        "<rect class=\"copyImageBorder\" x=\"422\" y=\"455\" height=\"13\" width=\"13\" fill=\"none\" stroke=\"#428bca\" stroke-width=\"0.2\" visibility=\"hidden\"/>" +
                        "<image class=\"otherpartnersImage\" xlink:href=\"\" x=\"458\" y=\"135\" height=\"13\" width=\"13\" visibility=\"hidden\" onclick=\"onClickOtherPartners(this)\"/>" +
                        "<rect class=\"otherpartnersImageBorder\" x=\"458\" y=\"135\" height=\"13\" width=\"13\" fill=\"none\" stroke=\"#428bca\" stroke-width=\"0.2\" visibility=\"hidden\"/>" +
                        "</g>";

                    int?usertreenodeid = usertreenodecaller == null ? (int?)null : usertreenodecaller.UserTreeNodeID;

                    //nowe drzewo
                    UserTree newtree = new UserTree
                    {
                        isMainTree            = false,
                        TransformMatrix       = "matrix(2 0 0 2 0 0)",
                        TreeHtmlCode          = htm.HtmlTree,
                        UserID                = user.UserID,
                        UserTreeNodeID        = usertreenodeid,
                        UserTreeNodePartnerID = usertreenodenew.UserTreeNodeID
                    };

                    db.UserTrees.Add(newtree);
                    db.SaveChanges();

                    //id stworzonego drzewa
                    htm.Tid = newtree.UserTreeID;

                    //łączenie nowego node z tree
                    UserTreeUserTreeNode ututn = new UserTreeUserTreeNode
                    {
                        UserTreeID     = newtree.UserTreeID,
                        UserTreeNodeID = usertreenodenew.UserTreeNodeID
                    };
                    db.UserTreesUserTreeNodes.Add(ututn);

                    //łączenie nodecaller z tree jeżeli jest -> jak nie ma caller jest z tabelki user więc jest zapisywany jak zapisujemy do UserTree wyżej
                    if (usertreenodeid != null)
                    {
                        UserTreeUserTreeNode ututn2 = new UserTreeUserTreeNode
                        {
                            UserTreeID     = newtree.UserTreeID,
                            UserTreeNodeID = (int)usertreenodeid
                        };
                        db.UserTreesUserTreeNodes.Add(ututn2);
                    }

                    db.SaveChanges();
                }
            }
            catch (Exception e)
            {
                DAL.DbContext db = new DAL.DbContext();
                db.Errors.Add(new Error
                {
                    Message    = "Błąd w generowaniu drzewa kolejnego partnera, HtmlBuilderController metoda:BuildUserTree() - " + e.Message,
                    StackTrace = e.StackTrace,
                    DateThrow  = DateTime.Now
                });
                db.SaveChanges();
            }

            return(htm);
        }