public async Task Update(TData entity)
        {
            var entityType = entity.GetType();

            await dbQuery.ExecuteCommandAsync(
                $@"UPDATE [dbo].[{DbEntityHelper.GetDbTableName(entityType)}] SET
                    {DbEntityHelper.GetUpdatePropertiesString(entity)}
                   WHERE Id = @Id
                ", DbEntityHelper.GetSqlParameters(entity, excludeId : false).ToArray());
        }
        /// <summary>
        /// Üstteki çalışma alanı değiştikçe burası asyn bir şekilde document template ten gelmesini istiyoruz.
        /// Ancak bunlar bizim asıl target node larımız olmayacak. Döküman atmak istediğimiz zaman buraya eklediğimiz node ları
        /// Adı ile aratarak target nodumuzu bulacağız.
        /// </summary>
        public void LoadSelectedWorkSpacesChilds()
        {
            try
            {
                cmbDistOTFolder.Items.Clear();

                var docTemplateNode = DbEntityHelper.GetAncestorNodeByName(WorkSpacesEnum.GetValue(WorkSpacesEnum.WorkSpaces.ContentServerDocumentTemplatesNodeId), (cmbDistWorkPlaceType.SelectedItem as DistributorChilds).Name);

                var childFoldersNodes = _serviceHelper.GetChildNodesById(docTemplateNode.Id);

                foreach (var childNode in childFoldersNodes)
                {
                    cmbDistOTFolder.Items.Add(new DistributorChilds()
                    {
                        Id   = childNode.Id,
                        Name = childNode.Name
                    });
                    if (!_serviceHelper.HasChildNode(childNode.Id))
                    {
                        continue;
                    }
                    var innerChildList = _serviceHelper.GetChildNodesById(childNode.Id);

                    foreach (var innerChild in innerChildList)
                    {
                        cmbDistOTFolder.Items.Add(new DistributorChilds()
                        {
                            Id   = innerChild.Id,
                            Name = childNode.Name + "\\" + innerChild.Name
                        });
                        if (!_serviceHelper.HasChildNode(innerChild.Id))
                        {
                            continue;
                        }
                        var innerListOfInnerChild = _serviceHelper.GetChildNodesById(innerChild.Id);
                        foreach (var innerOfInnerChild in innerListOfInnerChild)
                        {
                            cmbDistOTFolder.Items.Add(new ProjectChilds()
                            {
                                Id   = innerOfInnerChild.Id,
                                Name = childNode.Name + "\\" + innerChild.Name + "\\" + innerOfInnerChild.Name
                            });
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "Workspace itemleri listlere doldurulurken workspace değişmiş olabilir. Adres : LoadSelectedWorkSpacesChilds");
            }
        }
        public Task <long> Add(TData entity)
        {
            var entityType = entity.GetType();

            return(dbQuery.ExecuteInsertCommandAsync(
                       $@"INSERT INTO [dbo].[{DbEntityHelper.GetDbTableName(entityType)}]
                (
                    {DbEntityHelper.GetPropertiesString(entityType)}
                ) 
                VALUES
                (
                    {DbEntityHelper.GetSqlParametersString(entity)}
                )", DbEntityHelper.GetSqlParameters(entity).ToArray()));
        }
Exemple #4
0
    /// <summary>
    /// 获取指定用户有权限的菜单列表
    /// </summary>
    /// <param name="UserID"></param>
    /// <returns></returns>
    public static List <SysMenu> GetUserMenus(int UserID)
    {
        //如果没有启用权限控制,或者是管理员,直接获取全部菜单
        if (!EnabledPermission || IsAdministrator(UserID))
        {
            return(DB.From <SysMenu>().ToList());
        }

        var sql = GetUserMenusCommandText(UserID);

        var ds = DB.ExecuteDataSet(sql);

        if (ds == null || ds.Tables.Count == 0)
        {
            return(new List <SysMenu>());
        }

        return(DbEntityHelper.DataTableToEntities <SysMenu>(ds.Tables[0]));
    }
        /// <summary>
        /// Burada seçilmiş olan projeye göre bağımsız bölümleri getirme işi, proje adının ilk kısmının Bağımsız bölüm kategori adında
        /// aratarak bulunacağı halidir.Kategoride proje adı Örn : 1001 ise, bağ.böl kategorisinde bu alan 00001001 olarak kayıtlıdır. Format hepsinde aynı, başa 4 sıfır alıyor.
        /// </summary>
        private void GetIndependentSectionsOfProject()
        {
            cLstBxWorkSpaceType.Clear();
            var strVal = cmbProjectsOfDistricts.SelectedItem as DistributorChilds;
            var strVel = strVal?.Name.Split('/')[0];

            var projectsOfIndependentSection =
                DbEntityHelper.GetNodesByCategoryAttribute(118237, strVel);

            foreach (var targetNode in projectsOfIndependentSection)
            {
                var listItem = new ListViewItem
                {
                    Text = targetNode.Name,
                    Tag  = new DistributorChilds()
                    {
                        Id = targetNode.Id, Name = targetNode.Name
                    }
                };
                _independentSectionsOfProjectList.Add(listItem);
            }

            cLstBxWorkSpaceType.Items.AddRange(_independentSectionsOfProjectList.ToArray());
        }
        public async void DoStaffTask()
        {
            try
            {
                InvokedFormState();

                var targetNodesList = new List <EntityNode>(); // Bu boş liste doldurulup streamer helper methoduna verilecek.

                // Burada da Projeler içerisinde yüklenecek yerlerin nodeId listesini alacağız.
                // Ama ne yazık ki üst parent ten bir kaç kırınım içerideki child ları bulamıyoruz.
                var allChildNodesOfMainStaff = _serviceHelper.GetEntityNodeListIncludingChildrenUsingTypeFilter(WorkSpacesEnum.GetValue(WorkSpacesEnum.WorkSpaces.StaffNodeId), (cmbStaffChildRoot.SelectedItem as StaffChilds)?.Name);
                var targetRootAddress        = (cmbStaffChildRoot.SelectedItem as StaffChilds)?.Name;
                var countDeepness            = targetRootAddress?.Split('\\').Count();

                if (countDeepness > 3)
                {
                    MessageBox.Show(Resources.NodeDeepnessExceed);
                    return;
                }

                foreach (var childNodeOfMainStaff in allChildNodesOfMainStaff)
                {
                    switch (countDeepness)
                    {
                    case 1:
                    {
                        var oneOfTargetNode = DbEntityHelper.GetNodeByName(childNodeOfMainStaff.Id, targetRootAddress);
                        targetNodesList.Add(oneOfTargetNode);
                        break;
                    }

                    case 2:
                    {
                        var generalFirstStepTargetNodeName = targetRootAddress.Split('\\')[0];
                        var firstStepTargetNode            = DbEntityHelper.GetNodesByNameInExactParent(childNodeOfMainStaff.Id, generalFirstStepTargetNodeName).FirstOrDefault();

                        var generalSecondStepTargetNodeName = targetRootAddress.Split('\\')[1];
                        if (firstStepTargetNode != null)
                        {
                            var targetChildNode = DbEntityHelper.GetNodeByName(firstStepTargetNode.Id, generalSecondStepTargetNodeName);

                            if (targetChildNode != null)
                            {
                                targetNodesList.Add(targetChildNode);
                            }
                        }

                        break;
                    }

                    case 3:
                    {
                        var generalFirstStepTargetNodeName = targetRootAddress.Split('\\')[0];
                        var firstStepTargetNode            = DbEntityHelper.GetNodesByNameInExactParent(childNodeOfMainStaff.Id, generalFirstStepTargetNodeName).FirstOrDefault();

                        var generalSecondStepTargetNodeName = targetRootAddress.Split('\\')[1];
                        if (firstStepTargetNode == null)
                        {
                            continue;
                        }
                        var secondChildNode = DbEntityHelper.GetNodeByName(firstStepTargetNode.Id, generalSecondStepTargetNodeName);

                        var generalThirdStepTargetNodeName = targetRootAddress.Split('\\')[2];

                        var targetChildNode = DbEntityHelper.GetNodeByName(secondChildNode.Id, generalThirdStepTargetNodeName);

                        if (targetChildNode != null)
                        {
                            targetNodesList.Add(targetChildNode);
                        }
                        break;
                    }

                    default:
                        Console.WriteLine(Resources.NodeDeepnessExceed);
                        break;
                    }
                }


                if (txtStaffFolderRoot.Text == string.Empty || cmbStaffChildRoot.SelectedIndex == -1)
                {
                    MessageBox.Show(Resources.WarnMessageChooseTargets);
                    return;
                }
                var docsToUpload = StreamHelper.MakePreparedDocumentListToPush(txtStaffFolderRoot.Text, targetNodesList);

                if (docsToUpload.Count < 1)
                {
                    return;
                }

                var categoryModel = new GeneralCategoryModel()
                {
                    DocumentType = cmbStaffDocumentType.Text,
                    Year         = dtpStaffYear.Text,
                    Term         = cmbStaffTerm.Text,
                    NodeId       = WorkSpacesEnum.GetValue(WorkSpacesEnum.WorkSpaces.GeneralCategoryNodeId)
                };
                //await UploadDocuments(preparedList);
                var result = await _serviceHelper.UploadDocuments(docsToUpload, categoryModel);

                MessageBox.Show(result ? Resources.ProcessIsDone : Resources.ProcessIsNotDone);
                WaitedFormState();
                //await UploadDocuments(docsToUpload);
            }
            catch (Exception ex)
            {
                Console.WriteLine(Resources.ErrorTypeProccessing + ex);
                MessageBox.Show(Resources.ErrorTypeProccessing);
                Logger.Error(ex, Resources.ErrorTypeProccessing);
                //throw;
            }
        }
        public async void DoProjectWorks()
        {
            try
            {
                InvokedFormState();
                // Burada da Projeler içerisinde yüklenecek yerlerin nodeId listesini alacağız.
                // Ama ne yazık ki üst parent ten bir kaç kırınım içerideki child ları bulamıyoruz.
                var targetNodesList            = new List <EntityNode>(); // Bu boş liste doldurulup streamer helper methoduna verilecek.
                var allChildNodesOfMainProject = _serviceHelper.GetEntityNodeListIncludingChildrenUsingTypeFilter(WorkSpacesEnum.GetValue(WorkSpacesEnum.WorkSpaces.ProjectsNodeId), (cmbChildRoot.SelectedItem as ProjectChilds).Name);
                var targetRootAddress          = (cmbChildRoot.SelectedItem as ProjectChilds).Name;
                var countDeepness = targetRootAddress.Split('\\').Count();
                if (countDeepness > 3)
                {
                    MessageBox.Show(Resources.NodeDeepnessExceed);
                    return;
                }
                // Bu yüzden tüm node ların içerisine girip, node derinliğini hesaplayarak iç nodelara ulaşacağız ve maplemek üzere node keyleri tek tek StreamHelper a göndereceğiz.
                // Streamer helper aldığı bu node id ile bir ilişki kurabilirse map in içerisine koyup bize verecek, kuramazsa eklemeyecek.
                foreach (var childNodeOfMainProject in allChildNodesOfMainProject)
                {
                    switch (countDeepness)
                    {
                    case 1:
                    {
                        var oneOfTargetNode = DbEntityHelper.GetNodeByName(childNodeOfMainProject.Id, targetRootAddress);
                        targetNodesList.Add(oneOfTargetNode);
                        break;
                    }

                    case 2:
                    {
                        var generalFirstStepTargetNodeName = targetRootAddress.Split('\\')[0];
                        var firstStepTargetNode            = DbEntityHelper.GetNodesByNameInExactParent(childNodeOfMainProject.Id, generalFirstStepTargetNodeName).FirstOrDefault();

                        var generalSecondStepTargetNodeName = targetRootAddress.Split('\\')[1];

                        var targetChildNode = DbEntityHelper.GetNodeByName(firstStepTargetNode.Id, generalSecondStepTargetNodeName);

                        if (targetChildNode != null)
                        {
                            targetNodesList.Add(targetChildNode);
                        }

                        // Child kırınımı 2 ise
                        break;
                    }

                    case 3:
                    {
                        var generalFirstStepTargetNodeName = targetRootAddress.Split('\\')[0];
                        var firstStepTargetNode            = DbEntityHelper.GetNodesByNameInExactParent(childNodeOfMainProject.Id, generalFirstStepTargetNodeName).FirstOrDefault();

                        var generalSecondStepTargetNodeName = targetRootAddress.Split('\\')[1];

                        var secondChildNode = DbEntityHelper.GetNodeByName(firstStepTargetNode.Id, generalSecondStepTargetNodeName);

                        var generalThirdStepTargetNodeName = targetRootAddress.Split('\\')[2];

                        var targetChildNode = DbEntityHelper.GetNodeByName(secondChildNode.Id, generalThirdStepTargetNodeName);

                        // var targetChildNode = firstStepTargetNode.Where(x => x.Name == generalFirstStepTargetNodeName).FirstOrDefault();

                        if (targetChildNode != null)
                        {
                            targetNodesList.Add(targetChildNode);
                        }
                        // Child kırınım 3 ise
                        break;
                    }

                    default:
                        Console.WriteLine(Resources.NodeDeepnessExceed);
                        break;
                    }
                }

                // Bu mainChildRootElement => Document Templates içerisinde seçmiş olduğumuz child
                // mainChildRootElement inin adı ile Emlak Konut iş alanları altındaki Projeler içerisinde ne kadar aynı isimde child element varsa Bunlardan bir dictionary yap.

                if (txtFolderRoot.Text == string.Empty || cmbChildRoot.SelectedIndex == -1)
                {
                    MessageBox.Show(Resources.WarnMessageChooseTargets);
                    return;
                }
                var docsToUpload = StreamHelper.MakePreparedDocumentListToPush(txtFolderRoot.Text, targetNodesList);

                if (docsToUpload.Count < 1)
                {
                    return;
                }
                // nodeId, dosya adı, ve hedef nodeId ile yarattığımız dictionary i opentext e yüklenebilir hale getireceğiz.

                var categoryModel = new GeneralCategoryModel()
                {
                    DocumentType = cmbDocumentType.Text,
                    Year         = dtpYear.Text,
                    Term         = cmbTerm.Text,
                    NodeId       = WorkSpacesEnum.GetValue(WorkSpacesEnum.WorkSpaces.GeneralCategoryNodeId)
                };
                var result = await _serviceHelper.UploadDocuments(docsToUpload, categoryModel);

                MessageBox.Show(result ? Resources.ProcessIsDone : Resources.ProcessIsNotDone);
                WaitedFormState();
            }
            catch (Exception ex)
            {
                Console.WriteLine(Resources.ErrorTypeProccessing + ex);
                //throw;
                MessageBox.Show(Resources.ErrorTypeProccessing);
            }
        }
        /// <summary>
        /// SelectedItemList içerisinde EmlakKonut İş Alanı Türünü seçtiğimiz en alt taki checkedListBox taki node ların id sini tutar.
        /// Şimdi biz bu node ların içerisinde dönerek 2. Combobox olan "Klasör Seçimi" Node larını bulacağız, Ki bunlar TARGET Node ID lerimiz olacak.
        /// </summary>
        public async void DoDistributorWorks()
        {
            InvokedFormState();
            Debugger.NotifyOfCrossThreadDependency();
            var selectedItemList = cLstBxWorkSpaceType.CheckedItems;

            var targetNodesList       = new List <EntityNode>();
            var targetOpenTextAddress = cmbDistOTFolder.Text;
            var countDeepness         = cmbDistOTFolder.Text.Split('\\').Count();

            if (countDeepness > 3)
            {
                MessageBox.Show(Resources.NodeDeepnessExceed);
                return;
            }

            foreach (var item in selectedItemList)
            {
                var listViewItem = (ListViewItem)item;
                var itemNodeId   = (listViewItem.Tag as DistributorChilds).Id;
                var itemNodeName = (listViewItem.Tag as DistributorChilds).Name;

                switch (countDeepness)
                {
                case 1:
                {
                    var oneOfTargetNode = DbEntityHelper.GetNodeByName(itemNodeId, itemNodeName);
                    targetNodesList.Add(oneOfTargetNode);
                    break;
                }

                case 2:
                {
                    var generalFirstStepTargetNodeName = targetOpenTextAddress.Split('\\')[0];
                    var firstStepTargetNode            = DbEntityHelper.GetNodesByNameInExactParent(itemNodeId, generalFirstStepTargetNodeName).FirstOrDefault();

                    var generalSecondStepTargetNodeName = targetOpenTextAddress.Split('\\')[1];
                    if (firstStepTargetNode == null)
                    {
                        continue;
                    }
                    var targetChildNode = DbEntityHelper.GetNodeByName(firstStepTargetNode.Id, generalSecondStepTargetNodeName);

                    if (targetChildNode != null)
                    {
                        targetNodesList.Add(targetChildNode);
                    }
                    break;
                }

                case 3:
                {
                    var generalFirstStepTargetNodeName = targetOpenTextAddress.Split('\\')[0];
                    var firstStepTargetNode            = DbEntityHelper.GetNodesByNameInExactParent(itemNodeId, generalFirstStepTargetNodeName).FirstOrDefault();

                    var generalSecondStepTargetNodeName = targetOpenTextAddress.Split('\\')[1];
                    if (firstStepTargetNode == null)
                    {
                        continue;
                    }
                    var secondChildNode = DbEntityHelper.GetNodeByName(firstStepTargetNode.Id, generalSecondStepTargetNodeName);

                    var generalThirdStepTargetNodeName = targetOpenTextAddress.Split('\\')[2];

                    var targetChildNode = DbEntityHelper.GetNodeByName(secondChildNode.Id, generalThirdStepTargetNodeName);

                    if (targetChildNode != null)
                    {
                        targetNodesList.Add(targetChildNode);
                    }
                    break;
                }

                default:
                    Console.WriteLine(Resources.NodeDeepnessExceed);
                    break;
                }
            }

            var preparedList = StreamHelper.PrepareDocumentToSendMultipleTarget(targetNodesList, txtDistDocumentRoot.Text);

            if (preparedList.Count < 1)
            {
                return;
            }
            // nodeId, dos-ya adı, ve he-def nodeId ile ya-rat-tı-ğı-mız dictionary i open-text e yük-le-ne-bi-lir hale ge-ti-re-ce-ğiz.
            var categoryModel = new GeneralCategoryModel()
            {
                DocumentType = cmbDocumentType.Text,
                Year         = dtpDistributorYear.Text,
                Term         = cmbDistriborTerm.Text,
                NodeId       = WorkSpacesEnum.GetValue(WorkSpacesEnum.WorkSpaces.GeneralCategoryNodeId)
            };
            var result = await _serviceHelper.UploadDocuments(preparedList, categoryModel);

            MessageBox.Show(result ? Resources.ProcessIsDone : Resources.ProcessIsNotDone);
            WaitedFormState();
        }