public void SetName_XmlEscapeCharactersInName_Expected_ValidationErrorMessageOnNameSet()
        {
            IDataListItemModel dataListItemModel = new DataListItemModel("MyDisplayName");

            dataListItemModel.DisplayName = "UnitTestWith<>";
            Assert.IsTrue(!string.IsNullOrEmpty(dataListItemModel.ErrorMessage));
        }
        public void SetName_ValidName_Expected_NoValidationErrorMessageOnNameSet()
        {
            IDataListItemModel dataListItemModel = new DataListItemModel("MyDisplayName");

            dataListItemModel.DisplayName = "UnitTestDisplayName";
            Assert.IsTrue(string.IsNullOrEmpty(dataListItemModel.ErrorMessage));
        }
        public void SetName_InvalidName_Expected_ValidationErrorMessageOnNameSet()
        {
            IDataListItemModel dataListItemModel = new DataListItemModel("MyDisplayName");

            dataListItemModel.DisplayName = "UnitTestWith&amp;&lt;&gt;&quot;&apos;";
            Assert.IsTrue(!string.IsNullOrEmpty(dataListItemModel.ErrorMessage));
        }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            DataListItemModel itemModel = value as DataListItemModel;


            if (itemModel != null)
            {
                if (itemModel.IsRecordset)
                {
                    return(string.IsNullOrEmpty(itemModel.DisplayName)
                        ? string.Concat(AutoIdPrefix, "NewRecordSet", AutoIdSufix)
                        : string.Concat(AutoIdPrefix, "RecordSet_", itemModel.DisplayName, AutoIdSufix));
                }
                if (itemModel.IsField)
                {
                    return(string.IsNullOrEmpty(itemModel.DisplayName)
                        ? string.Concat(AutoIdPrefix, "NewField", AutoIdSufix)
                        : string.Concat(AutoIdPrefix, "Field_", itemModel.DisplayName, AutoIdSufix));
                }
                return(string.IsNullOrEmpty(itemModel.DisplayName)
                    ? string.Concat(AutoIdPrefix, "NewVariable", AutoIdSufix)
                    : string.Concat(AutoIdPrefix, "Variable_", itemModel.DisplayName, AutoIdSufix));
            }
            return(itemModel);
        }
        public static IDataListItemModel CreateDataListModel(string displayname, string description = "", IDataListItemModel parent = null, OptomizedObservableCollection <IDataListItemModel> children = null, bool hasError = false, string errorMessage = "", bool isEditable = true, bool isVisable = true, bool isSelected = false, enDev2ColumnArgumentDirection dev2ColumnArgumentDirection = enDev2ColumnArgumentDirection.None)
        {
            IDataListItemModel dataListModel = new DataListItemModel(displayname, dev2ColumnArgumentDirection, description, parent, children, hasError, errorMessage, isEditable, isVisable, isSelected);

            if (parent != null && !String.IsNullOrEmpty(displayname))
            {
                dataListModel.Name = parent.DisplayName + "()." + displayname;
            }
            return(dataListModel);
        }
        public static IDataListItemModel CreateDataListModel(string displayname, string description, enDev2ColumnArgumentDirection dev2ColumnArgumentDirection = enDev2ColumnArgumentDirection.None, IDataListItemModel parent = null, OptomizedObservableCollection <IDataListItemModel> children = null, bool hasError = false, string errorMessage = "", bool isEditable = true, bool isVisable = true, bool isSelected = false)
        {
            IDataListItemModel dataListModel = new DataListItemModel(displayname, dev2ColumnArgumentDirection, description, parent, children, hasError, errorMessage, isEditable, isVisable, isSelected);

            return(dataListModel);
        }
        public DataListModel GetList(Models.View view, List<DataSelectionModel> dataSelections)
        {
            Form form = view.Group.Forms.Single(m => m.FormId == view.Group.DefaultFormId);
            List<Field> columns = new List<Field>();
            foreach (Field field in form.Fields.Where(m => m.FieldColumn != null && !m.FieldColumn.Equals(String.Empty)).OrderBy(a => a.FieldOrder))
            {
                Permission permission = view.Permissions.FirstOrDefault(m => m.FieldId == field.FieldId);
                if (permission == null)
                {
                    columns.Add(field);
                }
                else
                {
                    if (permission.PermissionTypeId != 0)
                    {
                        columns.Add(field);
                    }
                }

            }
            DataListModel model = new DataListModel
            {
                View = view,
                Form = form,
                Columns = columns
            };
            RepositoryCompanies repositoryCompanies = new RepositoryCompanies();
            DataSelectionModel layer = null;
            foreach (DataSelectionModel selection in dataSelections)
            {
                if (selection.name == form.Name)
                {
                    layer = selection;
                    break;
                }
            }
            if (layer != null)
            {
                foreach (List<string> row in layer.aElements)
                {
                    DataListItemModel listItem = new DataListItemModel();
                    for (int i = 0; i < layer.nProperties; i++)
                    {
                        if (!String.IsNullOrEmpty(row[i]))
                        {
                            string upperPropertyName = layer.aPropertiesName[i].ToUpper();
                            switch (upperPropertyName)
                            {
                                case "ID":
                                    int id = 0;
                                    int.TryParse(row[i], out id);
                                    listItem.ItemId = id;
                                    break;
                                case "UNIQUEID":
                                    listItem.UniqueId = row[i];
                                    break;
                                case "USERID":
                                    listItem.UserId = row[i];
                                    MembershipUser user = Membership.GetUser(new Guid(listItem.UserId));
                                    if (user != null)
                                    {
                                        listItem.UserName = user.UserName;
                                        UserProfile profile = UserProfile.GetUserProfile(user.UserName);
                                        Company company = repositoryCompanies.Get(profile.CompanyId);
                                        if (company != null)
                                            listItem.Company = company.Name;
                                    }
                                    break;
                                case "DATO":
                                    DateTime dt = DateTime.Now;
                                    DateTime.TryParse(row[i], culture, DateTimeStyles.AssumeLocal, out dt);
                                    listItem.Date = dt;
                                    break;
                                default:
                                    foreach (Field field in model.Columns)
                                    {

                                        if (layer.aPropertiesName[i].ToUpper() == field.FieldColumn.ToUpper())
                                        {
                                            if (field.FieldTypeId == 10)
                                            {

                                                DateTime dt1 = DateTime.Now;
                                                DateTime.TryParse(row[i], culture, DateTimeStyles.AssumeLocal, out dt1);
                                                listItem.Data.Add(field.FieldColumn, dt1.ToString("d", culture));
                                            }
                                            else
                                            {
                                                listItem.Data.Add(field.FieldColumn, row[i]);
                                            }
                                            break;
                                        }
                                    }
                                    break;
                            }
                        }
                    }
                    model.ListItemModels.Add(listItem);
                }
            }
            return model;
        }
        public DataListModel GetList(View view, string userId)
        {
            RepositoryCompanies repositoryCompanies = new RepositoryCompanies();
            List<Field> columns = new List<Field>();
            Form form = view.Group.Forms.Single(m => m.FormId == view.Group.DefaultFormId);
            string select = "";
            bool fId = false;
            bool fUserId = false;
            bool fUniqueId = false;
            bool fDato = false;
            foreach (Field field in form.Fields.Where(a => a.FieldColumn != null && !a.FieldColumn.Equals(String.Empty)).OrderBy(b => b.FieldOrder))
            {
                Permission permission = view.Permissions.FirstOrDefault(a => a.FieldId == field.FieldId);
                if (permission == null || permission.PermissionTypeId != 0)
                {
                    columns.Add(field);
                    switch (field.FieldColumn.ToUpper())
                    {
                        case "ID":
                            select = select + "," + field.FieldColumn;
                            fId = true;
                            break;
                        case "UNIQUEID":
                            select = select + "," + field.FieldColumn;
                            fUniqueId = true;
                            break;
                        case "USERID":
                            select = select + "," + field.FieldColumn;
                            fUserId = true;
                            break;
                        case "DATO":
                            select = select + "," + field.FieldColumn;
                            fDato = true;
                            break;
                        default:
                            if (field.FieldTypeId == 16)
                            {
                                select = select + "," + field.FieldColumn + ".STAsText() AS " + field.FieldColumn;
                            }
                            else
                            {
                                select = select + "," + field.FieldColumn;
                            }

                            break;
                    }

                }

            }
            if (!fUniqueId)
                select = select + ",UniqueId";
            if (!fUserId)
                select = select + ",UserId";
            if (!fDato)
                select = select + ",Dato";
            if (!fId)
                select = select + ",Id";
            select = "SELECT " + select.Substring(1);

            DataListModel model = new DataListModel
            {
                View = view,
                Form = form,
                Columns = columns
            };
            DataTable dt = new DataTable();
            using (SqlConnection connection = new SqlConnection(form.ResourceName))
            {
                SqlCommand command = connection.CreateCommand();
                command.CommandText = select+" FROM " + form.ClassName;
                if (!String.IsNullOrEmpty(userId))
                {
                    command.CommandText = command.CommandText + " WHERE UserId = '" + userId + "'";
                }
                command.CommandText += " order by dato desc";
                SqlDataAdapter adapter = new SqlDataAdapter(command);
                adapter.Fill(dt);
            }
            Dictionary<string, UserInfo> users = new Dictionary<string, UserInfo>();
            foreach (DataRow row in dt.Rows)
            {
                DataListItemModel listItem = new DataListItemModel();
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    if (!row.IsNull(i))
                    {

                        string propertyName = dt.Columns[i].ColumnName;
                        string propertyNameUpper = propertyName.ToUpper();
                        switch (propertyNameUpper)
                        {
                            case "ID":
                                listItem.ItemId = (int)row[i];
                                if(fId)
                                    listItem.Data.Add(propertyName, row[i].ToString());
                                break;
                            case "UNIQUEID":

                                listItem.UniqueId = (string)row[i];
                                if (fUniqueId)
                                    listItem.Data.Add(propertyName, row[i].ToString());
                                break;
                            case "USERID":
                                if (row[i] != DBNull.Value && row[i].ToString() != "")
                                {
                                    listItem.UserId = (string)row[i];
                                    if (fUserId)
                                        listItem.Data.Add(propertyName, row[i].ToString());
                                    UserInfo user = null;
                                    if (users.ContainsKey(listItem.UserId))
                                        user = users[listItem.UserId];
                                    else
                                    {
                                        MembershipUser user1 = Membership.GetUser(new Guid(listItem.UserId));
                                        if (user1 != null)
                                        {
                                            user = new UserInfo();
                                            user.UserName = user1.UserName;
                                            UserProfile profile = UserProfile.GetUserProfile(user1.UserName);
                                            if (profile != null)
                                            {
                                                Company company = repositoryCompanies.Get(profile.CompanyId);
                                                if (company != null)
                                                {
                                                    user.CompanyName = company.Name;
                                                }
                                            }
                                        }
                                        users.Add(listItem.UserId, user);
                                    }
                                    if (user != null)
                                    {
                                        listItem.UserName = user.UserName;
                                        listItem.Company = user.CompanyName;
                                    }
                                }
                                break;
                            case "DATO":
                                listItem.Date = (DateTime)row[i];
                                if (fDato)
                                    listItem.Data.Add(propertyName, row[i].ToString());
                                break;
                            default:
                                listItem.Data.Add(propertyName, row[i].ToString());
                                break;
                        }
                    }
                }
                model.ListItemModels.Add(listItem);
            }
            return model;
        }