/// for Add Option in Select(DropDpownList)
        /// input: objectname, return:Check if user allowed to ad to table and return List of Columns (form or grid)
        public ActionResult GetColumns(string objectname)
        {
            byte    version  = 0;
            PageDiv page     = _hrUnitOfWork.PagesRepository.GetPageType(CompanyId, objectname, version);
            bool    isAllowd = _hrUnitOfWork.MenuRepository.IsAllowTable(page.MenuId, UserName);

            if (!isAllowd)
            {
                return(Json("false," + MsgUtils.Instance.Trls("DontHavePermissionAddTable"), JsonRequestBehavior.AllowGet));
            }

            List <FormList> qualGroups = new List <FormList>();

            if (objectname == "Qualifications")
            {
                qualGroups = _hrUnitOfWork.QualificationRepository.GetQualGroups().Select(q => new FormList {
                    id = q.Id, name = q.Name
                }).ToList();
            }

            if (page.DivType == "Form")
            {
                var FormColumns = _hrUnitOfWork.PagesRepository.GetFormColumnInfo(CompanyId, objectname, version, Language)
                                  .Where(c => c.required);
                return(Json(new { columns = FormColumns, qualGroupLst = qualGroups }, JsonRequestBehavior.AllowGet));
            }
            var GridColumns = _hrUnitOfWork.PagesRepository.GetColumnInfo(CompanyId, objectname, version, Language)
                              .Where(c => c.Required && c.ColumnType != "button" && !(c.ColumnName == "Code" && c.DataType == "number")).OrderBy(c => c.ColumnOrder);

            return(Json(new { columns = GridColumns, qualGroupLst = qualGroups }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult DeletePage(IEnumerable <PageDivViewModel> models)
        {
            var           datasource = new DataSource <PageDivViewModel>();
            List <string> keys       = new List <string>();

            for (int i = 0; i < models.Count(); i++)
            {
                var x = models.ElementAtOrDefault(i);
                keys.Add(x.CompanyId + x.ObjectName + x.Version + Language);
            }


            if (ModelState.IsValid)
            {
                foreach (PageDivViewModel model in models)
                {
                    var page = new PageDiv
                    {
                        Id = model.Id
                    };

                    AutoMapper(new Models.AutoMapperParm
                    {
                        Source     = page,
                        ObjectName = "PageDivs",
                        Transtype  = TransType.Delete
                    });


                    _hrUnitOfWork.PageEditorRepository.Remove(page);

                    foreach (ColumnTitle title in _hrUnitOfWork.Repository <ColumnTitle>().Where(t => t.CompanyId == model.CompanyId && t.ObjectName == model.ObjectName && t.Version == model.Version).ToList())
                    {
                        _hrUnitOfWork.PageEditorRepository.Remove(title);
                    }
                    foreach (RoleColumns role in _hrUnitOfWork.Repository <RoleColumns>().Where(r => r.CompanyId == model.CompanyId && r.ObjectName == model.ObjectName && r.Version == model.Version).ToList())
                    {
                        _hrUnitOfWork.PageEditorRepository.Remove(role);
                    }
                }

                datasource.Errors = SaveChanges(Language);
                datasource.Total  = models.Count();
            }

            datasource.Data = models;

            if (datasource.Errors.Count() > 0)
            {
                return(Json(datasource));
            }
            else
            {
                for (int i = 0; i < keys.Count; i++)
                {
                    if (_hrUnitOfWork.PagesRepository.CacheManager.IsSet(keys[i]))
                    {
                        _hrUnitOfWork.PagesRepository.CacheManager.Remove(keys[i]);
                    }
                }
                return(Json(datasource.Data));
            }
        }
        public ActionResult CreateForm(IEnumerable <PageDivViewModel> models)
        {
            var result = new List <PageDiv>();

            var datasource = new DataSource <PageDivViewModel>();

            datasource.Data  = models;
            datasource.Total = models.Count();

            if (ModelState.IsValid)
            {
                if (ServerValidationEnabled)
                {
                    var errors = _hrUnitOfWork.MenuRepository.Check(new CheckParm
                    {
                        CompanyId    = CompanyId,
                        ObjectName   = "PageDivs",
                        TableName    = "PageDivs",
                        ParentColumn = "CompanyId",
                        Columns      = Models.Utils.GetModifiedRows(ModelState),
                        Culture      = Language
                    });

                    if (errors.Count() > 0)
                    {
                        datasource.Errors = errors;
                        return(Json(datasource));
                    }
                }

                foreach (PageDivViewModel p in models)
                {
                    var page = new PageDiv
                    {
                        ObjectName = p.ObjectName,
                        TableName  = p.TableName,
                        DivType    = "Form",
                        Title      = p.Title,
                        MenuId     = p.MenuId,
                        CompanyId  = CompanyId
                    };

                    result.Add(page);
                    _hrUnitOfWork.PageEditorRepository.AddFieldSetColumns(page);
                }

                datasource.Errors = SaveChanges(Language);
            }
            else
            {
                datasource.Errors = Models.Utils.ParseErrors(ModelState.Values);
            }

            datasource.Data = (from p in models
                               join r in result on new { p.CompanyId, p.ObjectName } equals new { r.CompanyId, r.ObjectName }
                               select new PageDivViewModel
            {
                Id = r.Id,
                TableName = p.TableName,
                ObjectName = p.ObjectName,
                DivType = "Form",
                Title = p.Title,
                MenuId = p.MenuId,
                CompanyId = CompanyId
            }).ToList();
            var Id      = datasource.Data.Select(i => i.Id).ToList();
            var tblName = datasource.Data.Select(i => i.TableName).ToList();

            _hrUnitOfWork.PageEditorRepository.AddSectionColumns(Id);
            SaveChanges(Language);
            for (int i = 0; i < Id.Count(); i++)
            {
                _hrUnitOfWork.PageEditorRepository.AddFormColumns(Id[i], tblName[i]);
            }
            // _hrUnitOfWork.PageEditorRepository.AddFormColumns(Id,tblName);
            SaveChanges(Language);


            if (datasource.Errors.Count() > 0)
            {
                return(Json(datasource));
            }
            else
            {
                return(Json(datasource.Data));
            }
        }