/// <summary>
        /// Deletes the <see cref="HaushaltsRechner.Data.Model.MOVEMENT"/>.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <returns><c>true</c>, if deletion successfull</returns>
        public static bool DeleteMovement(Guid id)
        {
            if (id == Guid.Empty)
            {
                return false;
            }

            using (var en = new HaushaltsrechnerEntities())
            {
                var m = en.MOVEMENT.FirstOrDefault(mo => mo.ID == id);

                if (m == null)
                {
                    return false;
                }

                en.MOVEMENT.DeleteObject(m);
                en.SaveChanges();
                return true;
            }
        }
        /// <summary>
        /// Adds an <see cref="HaushaltsRechner.Data.Model.CATEGORY"/>.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <returns><c>true</c>, if addition successfull</returns>
        public static bool AddCategory(string name)
        {
            using (var en = new HaushaltsrechnerEntities())
            {
                var cOld = en.CATEGORY.FirstOrDefault(cat => cat.NAME == name);

                if (cOld == null)
                {
                    var c = new CATEGORY
                    {
                        ID = Guid.NewGuid(),
                        NAME = name
                    };

                    en.CATEGORY.AddObject(c);
                    en.SaveChanges();

                    return true;
                }

                return false;
            }
        }
예제 #3
0
        /// <summary>
        /// Adds an <see cref="HaushaltsRechner.Data.Model.ACCOUNT"/>.
        /// </summary>
        /// <param name="name">The new name.</param>
        /// <returns><c>false</c>, if <see cref="HaushaltsRechner.Data.Model.ACCOUNT"/> already exists</returns>
        public static bool AddAccount(string name)
        {
            using (var en = new HaushaltsrechnerEntities())
            {
                var aOld = en.ACCOUNT.FirstOrDefault(r => r.NAME == name);

                if (aOld == null)
                {
                    var a = new ACCOUNT
                    {
                        ID = Guid.NewGuid(),
                        NAME = name
                    };

                    en.ACCOUNT.AddObject(a);
                    en.SaveChanges();

                    return true;
                }

                return false;
            }
        }
예제 #4
0
        /// <summary>
        /// Creates the <see cref="HaushaltsRechner.Data.Model.REASON"/>.
        /// </summary>
        /// <param name="text">The text.</param>
        /// <returns>
        /// The new <see cref="HaushaltsRechner.Data.Model.REASON"/>, 
        /// or if Text already exists,the old <see cref="HaushaltsRechner.Data.Model.REASON"/>
        /// </returns>
        public static REASON CreateReason(string text)
        {
            using (var en = new HaushaltsrechnerEntities())
            {
                var rOld = en.REASON.Where(r => r.TEXT == text);

                if (!rOld.Any())
                {
                    var r = new REASON
                    {
                        ID = Guid.NewGuid(),
                        TEXT = text
                    };

                    en.REASON.AddObject(r);
                    en.SaveChanges();

                    return r;
                }

                return rOld.First();
            }
        }
        /// <summary>
        /// Edits an <see cref="HaushaltsRechner.Data.Model.CATEGORY"/>.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <param name="newName">The new name.</param>
        /// <returns><c>true</c>, if edition successfull</returns>
        public static bool EditCategory(Guid id, string newName)
        {
            using (var en = new HaushaltsrechnerEntities())
            {
                var cat = en.CATEGORY.FirstOrDefault(a => a.ID == id);
                if (cat == null || newName == null || newName == string.Empty)
                {
                    return false;
                }

                cat.NAME = newName;
                en.SaveChanges();

                return true;
            }
        }
예제 #6
0
        /// <summary>
        /// Creates an <see cref="HaushaltsRechner.Data.Model.ACCOUNT"/> with the specified name and one 
        /// <see cref="HaushaltsRechner.Data.Model.USER"/>
        /// </summary>
        /// <param name="name">Name of the new <see cref="HaushaltsRechner.Data.Model.ACCOUNT"/></param>
        /// <param name="userId">ID of the first <see cref="HaushaltsRechner.Data.Model.USER"/>
        /// of the <see cref="HaushaltsRechner.Data.Model.ACCOUNT"/></param>
        /// <returns>
        /// The created <see cref="HaushaltsRechner.Data.Model.ACCOUNT"/>
        /// or an old <see cref="HaushaltsRechner.Data.Model.ACCOUNT"/>, if Name is already in DB
        /// </returns>
        public static ACCOUNT CreateAccount(string name, Guid userId)
        {
            using (var en = new HaushaltsrechnerEntities())
            {
                var user = en.USER.FirstOrDefault(u => u.ID == userId);
                var aOld = en.ACCOUNT.First(r => r.NAME == name && r.USER.Any(u => u.ID == user.ID));

                if (aOld == null)
                {
                    var a = new ACCOUNT
                    {
                        ID = Guid.NewGuid(),
                        NAME = name
                    };

                    a.USER.Add(user);
                    en.ACCOUNT.AddObject(a);
                    en.SaveChanges();

                    return a;
                }

                return aOld;
            }
        }
예제 #7
0
        /// <summary>
        /// Edits an <see cref="ACCOUNT"/> user.
        /// </summary>
        /// <param name="accId">The <see cref="HaushaltsRechner.Data.Model.ACCOUNT"/> id.</param>
        /// <param name="userId">The <see cref="HaushaltsRechner.Data.Model.USER"/> id.</param>
        /// <param name="set">
        /// if set to <c>true</c>,
        /// <see cref="HaushaltsRechner.Data.Model.USER"/> will be added to <see cref="HaushaltsRechner.Data.Model.ACCOUNT"/>
        /// </param>
        /// <returns><c>true</c>, if edition successfull</returns>
        public static bool EditAccountUsers(Guid accId, Guid userId, bool set)
        {
            using (var en = new HaushaltsrechnerEntities())
            {
                var acc = en.ACCOUNT.FirstOrDefault(a => a.ID == accId);
                if (acc == null || userId == Guid.Empty)
                {
                    return false;
                }

                var user = en.USER.FirstOrDefault(u => u.ID == userId);
                if (user == null)
                {
                    return false;
                }

                if (set && !acc.USER.Contains(user))
                {
                    acc.USER.Add(user);
                }
                else if (!set && acc.USER.Contains(user))
                {
                    acc.USER.Remove(user);
                }

                en.SaveChanges();

                return true;
            }
        }
예제 #8
0
        /// <summary>
        /// Edits an <see cref="HaushaltsRechner.Data.Model.ACCOUNT"/>.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <param name="newName">The new name.</param>
        /// <returns><c>true</c>, if edition successfull </returns>
        public static bool EditAccount(Guid id, string newName)
        {
            using (var en = new HaushaltsrechnerEntities())
            {
                var acc = en.ACCOUNT.FirstOrDefault(a=>a.ID == id);
                if(acc == null || string.IsNullOrEmpty(newName))
                {
                    return false;
                }

                acc.NAME = newName;
                en.SaveChanges();

                return true;
            }
        }
예제 #9
0
        /// <summary>
        /// Deletes an <see cref="HaushaltsRechner.Data.Model.ACCOUNT"/>.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <returns><c>true</c>, if deletion successfull</returns>
        public static bool DeleteAccount(Guid id)
        {
            using (var en = new HaushaltsrechnerEntities())
            {
                var acc = en.ACCOUNT.FirstOrDefault(a => a.ID == id);
                if (acc == null)
                {
                    return false;
                }

                acc.USER.Clear();

                var movements = acc.MOVEMENT.ToList();
                acc.MOVEMENT.Clear();
                foreach (var m in movements)
                {
                    en.MOVEMENT.DeleteObject(m);
                }

                en.ACCOUNT.DeleteObject(acc);
                en.SaveChanges();

                return true;
            }
        }
        public string AddMovement(string data)
        {
            try
            {
                var movement = JsonConvert.DeserializeObject<NewMovement>(data);
                var en = new HaushaltsrechnerEntities();

                var acc = en.ACCOUNT.FirstOrDefault(a=>a.ID == movement.AccountID);
                var cat = en.CATEGORY.FirstOrDefault(c=>c.ID == movement.CategoryID);
                var user = en.USER.FirstOrDefault(u => u.ID == SessionManager.CurrentUser.ID);
                var rea = en.REASON.Where(r => r.TEXT == movement.Reason);

                REASON reason;
                if (rea.Any())
                {
                    reason = rea.First();
                }
                else
                {
                    reason = new REASON
                    {
                        ID = Guid.NewGuid(),
                        TEXT = movement.Reason
                    };
                    en.REASON.AddObject(reason);
                }

                var m = new MOVEMENT
                {
                    ID = movement.ID,
                    DATE_ADDED = movement.DateAdded,
                    DATE_EDIT = DateTime.Now,
                    AMOUNT = Decimal.Parse(movement.Amount.Replace("€",string.Empty)),
                    MESSAGE = movement.Message,
                    USER = user,
                    ACCOUNT = acc,
                    CATEGORY = cat,
                    REASON = reason
                };

                en.MOVEMENT.AddObject(m);
                en.SaveChanges();
                return bool.TrueString;
            }
            catch
            {
                return bool.FalseString;
            }
        }
예제 #11
0
        /// <summary>
        /// Sets the <see cref="RIGHT"/> for a <see cref="USER"/>.
        /// </summary>
        /// <param name="userID">The user ID.</param>
        /// <param name="rightID">The right ID.</param>
        /// <param name="set">
        /// if set to <c>true</c> set <see cref="RIGHT"/>.
        /// if set to <c>false</c> remove <see cref="RIGHT"/></param>
        /// <returns></returns>
        public static bool SetRight(Guid userID, Guid rightID, bool set)
        {
            using (var en = new HaushaltsrechnerEntities())
            {
                var user = en.USER.FirstOrDefault(u => u.ID == userID);
                var right = en.RIGHT.FirstOrDefault(r => r.ID == rightID);

                if (user == null || right == null)
                {
                    return false;
                }

                if (set)
                {
                    if (!user.RIGHT.Contains(right))
                    {
                        user.RIGHT.Add(right);
                    }
                }
                else
                {
                    if (user.RIGHT.Contains(right))
                    {
                        user.RIGHT.Remove(right);
                    }
                }
                en.SaveChanges();
            }

            return true;
        }
예제 #12
0
        /// <summary>
        /// Adds a <see cref="HaushaltsRechner.Data.Model.USER"/>.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="pw">The password.</param>
        /// <param name="sysAdmin">if set to <c>true</c> System Admin flag will be set.</param>
        /// <returns><c>true</c>, if addition successfull</returns>
        public static bool AddUser(string name, string pw, bool sysAdmin)
        {
            if (name == string.Empty)
            {
                return false;
            }

            using (var en = new HaushaltsrechnerEntities())
            {
                var pass = string.Empty;

                var testUser = en.USER.FirstOrDefault(u => u.NAME == name);

                if (testUser != null)
                {
                    return false;
                }

                if (pw != string.Empty)
                {
                    byte[] encrypted = Cryptography.EncryptStringToBytes_AES(pw);

                    foreach (var e in encrypted)
                    {
                        pass += (char)e;
                    }
                }

                var user = new USER
                {
                    NAME = name,
                    PASSWORT = pass,
                    ISADMIN = sysAdmin,
                    ID = Guid.NewGuid()
                };
                en.USER.AddObject(user);
                en.SaveChanges();
                return true;
            }
        }
예제 #13
0
        /// <summary>
        /// Edit a <see cref="HaushaltsRechner.Data.Model.USER" />.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <param name="name">The new name.</param>
        /// <param name="pw">The new password.</param>
        /// <param name="lang">The language.</param>
        /// <param name="sysAdmin">new sys admin.</param>
        /// <returns>
        ///   <c>true</c>, if edition successfull
        /// </returns>
        public static bool EditUser(Guid id, string name, string pw, string lang, bool? sysAdmin)
        {
            if (id == Guid.Empty || name == string.Empty)
            {
                return false;
            }

            using (var en = new HaushaltsrechnerEntities())
            {
                var testUser = en.USER.FirstOrDefault(u => u.NAME == name && u.ID != id);

                if (testUser != null)
                {
                    return false;
                }

                var user = en.USER.FirstOrDefault(u => u.ID == id);

                if (user == null)
                {
                    return false;
                }

                if (!string.IsNullOrEmpty(pw))
                {
                    var pass = string.Empty;
                    byte[] encrypted = Cryptography.EncryptStringToBytes_AES(pw);

                    foreach (var e in encrypted)
                    {
                        pass += (char)e;
                    }

                    user.PASSWORT = pass;
                }

                try
                {
                    var culture = CultureInfo.CreateSpecificCulture(lang);
                    user.CULTURE = culture.Name;
                }
                catch
                {
                }

                user.NAME = name;
                user.ISADMIN = sysAdmin.HasValue ? sysAdmin.Value : user.ISADMIN;

                en.SaveChanges();
                return true;
            }
        }
예제 #14
0
        /// <summary>
        /// Deletes a <see cref="HaushaltsRechner.Data.Model.USER"/>.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <returns><c>true</c>, if deletion sucessfull</returns>
        public static bool DeleteUser(Guid id)
        {
            using (var en = new HaushaltsrechnerEntities())
            {
                var user = en.USER.FirstOrDefault(u => u.ID == id);
                if (user == null)
                {
                    return false;
                }

                user.RIGHT.Clear();

                var mov = en.MOVEMENT.Where(m => m.USER_ID == id);
                foreach (var m in mov)
                {
                    m.USER = null;
                }

                var acc = en.ACCOUNT.Where(a => a.USER.Any(u => u.ID == id));
                foreach (var a in acc)
                {
                    a.USER.Remove(user);
                }

                en.USER.DeleteObject(user);
                en.SaveChanges();
            }
            return true;
        }