示例#1
0
        private void UpdateMustPayStatus()
        {
            var menMustPay   = ConfigHelper.GetConfigValue <bool>(ConfigFields.DOLZNI_CLANI);
            var womenMustPay = ConfigHelper.GetConfigValue <bool>(ConfigFields.DOLZNI_CLANI);

            var menFrom   = ConfigHelper.GetConfigValue <int>(ConfigFields.OBDOBJE_CLANI_OD);
            var menTo     = ConfigHelper.GetConfigValue <int>(ConfigFields.OBDOBJE_CLANI_DO);
            var womenFrom = ConfigHelper.GetConfigValue <int>(ConfigFields.OBDOBJE_CLANICE_OD);
            var womenTo   = ConfigHelper.GetConfigValue <int>(ConfigFields.OBDOBJE_CLANICE_DO);

            using (var db = new FeeStatusesDBContext())
            {
                var members = db.Member.ToList();

                foreach (var member in members)
                {
                    member.MustPay = false;

                    var age = DateTime.Now.Year - member.DateOfBirth.Year;
                    if (member.Gender && menMustPay && age >= menFrom && age < menTo) // moški
                    {
                        member.MustPay = true;
                    }
                    else if (!member.Gender && womenMustPay && age >= womenFrom && age < womenTo) // ženske
                    {
                        member.MustPay = true;
                    }
                }

                db.SaveChanges();
            }
        }
示例#2
0
        private void FinishImportButton_Click(object sender, EventArgs e)
        {
            try
            {
                using (var db = new FeeStatusesDBContext())
                {
                    foreach (DataGridViewRow row in dataGridView1.Rows)
                    {
                        var dataRow = row.DataBoundItem as BankExportDocumentSelectionViewModel;
                        if (dataRow == null || !dataRow.Selected)
                        {
                            continue;
                        }

                        List <int> years  = dataRow.Years.Split(',').Select(int.Parse).ToList();
                        Member     member = db.Member.Find(dataRow.Member);

                        years.ForEach(member.AddDefaultFeeLogForYear);
                        member.FeeLogs.Where(fl => years.Contains(fl.Year)).ToList().ForEach(
                            fl => fl.PaymentStatusID = PaymentStatus.PLACAL);
                    }

                    db.SaveChanges();
                }
                owner.BindData(true);
            }
            catch (Exception)
            {
            }
            finally
            {
                Exit();
            }
        }
        private void AddSpecificYearToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var selectYearDialog = new SelectYearForm();

            if (selectYearDialog.ShowDialog() == DialogResult.OK)
            {
                int selectedYear = selectYearDialog.Year;

                using (var db = new FeeStatusesDBContext())
                {
                    if (db.Member.Any(m => m.MustPay && m.FeeLogs.Any(fl => fl.Year == selectedYear)))
                    {
                        MessageBox.Show(
                            string.Format(WindowMessages.RECORDS_FOR_YEAR_EXIST_MSG, selectedYear),
                            WindowMessages.RECORDS_FOR_YEAR_EXIST_TITLE, MessageBoxButtons.OK
                            );
                        return;
                    }
                }

                SaveChanges(true);

                using (var db = new FeeStatusesDBContext())
                {
                    if (!db.Member.Where(m => m.MustPay).All(m => m.FeeLogs.Any(fl => fl.Year == selectedYear)))
                    {
                        db.Member.ToList().ForEach(m => m.AddDefaultFeeLogForYear(selectedYear));
                        db.SaveChanges();
                    }
                }

                BindPaymentsDataGridView(onlyMustPayers, includeDeleted);
                ScrollHorizontallyToEnd();
            }
        }
        public override void SaveChanges(bool notifyUser)
        {
            paymentsDataGridView.EndEdit();

            if (_dataChanged && paymentsDataGridView.Columns.Count > 4)
            {
                if (notifyUser && DialogResult.No == MessageBox.Show(WindowMessages.SAVE_OR_DISCARD_CHANGES_MSG,
                                                                     WindowMessages.SAVE_OR_DISCARD_CHANGES_TITLE,
                                                                     MessageBoxButtons.YesNo,
                                                                     MessageBoxIcon.Warning))
                {
                    ClearChanges();
                    return;
                }

                using (var db = new FeeStatusesDBContext())
                {
                    foreach (int rowIndex in _changedCells.Keys)
                    {
                        var    changedRow = paymentsDataGridView.Rows[rowIndex].DataBoundItem as DataRowView;
                        string rowId      = changedRow.Row.ItemArray[1].ToString();

                        foreach (int colIndex in _changedCells[rowIndex])
                        {
                            short changedColName = short.Parse(paymentsDataGridView.Columns[colIndex].HeaderText);
                            //YearXXXX

                            FeeLogs log = db.Member.Find(rowId).FeeLogs.SingleOrDefault(l => l.Year == changedColName);
                            if (log != null)
                            {
                                log.PaymentStatusID = (int)changedRow.Row.ItemArray[colIndex];
                            }
                            else
                            {
                                db.FeeLogs.Add(new FeeLogs
                                {
                                    VulkanID        = rowId,
                                    Year            = changedColName,
                                    PaymentStatusID = (int)changedRow.Row.ItemArray[colIndex]
                                }
                                               );
                            }
                        }
                    }

                    int result = db.SaveChanges();
                }

                ClearChanges();
                NotifyDependantControlsOfChanges();
            }
        }
示例#5
0
        private void RestoreSelectedToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IEnumerable <DataGridViewRow> rows = membersDataGridView.Rows.Cast <DataGridViewRow>();

            using (var db = new FeeStatusesDBContext())
            {
                rows.ToList().ForEach(r =>
                {
                    var row = r.DataBoundItem as MemberViewModel;
                    if (row != null && row.Selected)
                    {
                        db.Member.Find(row.VulkanID).Active = true;
                    }
                }
                                      );
                db.SaveChanges();
            }

            BindMembersDataGridView(onlyMustPayers, includeDeleted);
        }
示例#6
0
        public override void SaveChanges(bool notifyUser)
        {
            membersBindingSource.EndEdit();

            if (_dataChanged)
            {
                using (var db = new FeeStatusesDBContext())
                {
                    if (notifyUser && DialogResult.No == MessageBox.Show(WindowMessages.SAVE_OR_DISCARD_CHANGES_MSG,
                                                                         WindowMessages.SAVE_OR_DISCARD_CHANGES_TITLE,
                                                                         MessageBoxButtons.YesNo,
                                                                         MessageBoxIcon.Warning))
                    {
                        ClearChanges();
                        return;
                    }

                    foreach (DataGridViewRow row in membersDataGridView.Rows)
                    {
                        var    updatedMemberRow   = row.DataBoundItem as MemberViewModel;
                        Member updatedMemberDBRow = updatedMemberRow.ToDBMember();

                        Member originalMemberDBRow = db.Member.Find(updatedMemberDBRow.VulkanID);

                        if (originalMemberDBRow != default(Member))
                        {
                            db.Entry(originalMemberDBRow).CurrentValues.SetValues(updatedMemberDBRow);
                        }
                    }

                    db.SaveChanges();
                }
                ClearChanges();
                NotifyDependantControlsOfChanges();
            }
        }
示例#7
0
        private void ImportMemberData(string fullFilePath, Encoding encoding)
        {
            bool dataExists;
            var  idList = new List <string>();

            using (var db = new FeeStatusesDBContext())
            {
                if (
                    (dataExists = db.Member.Any()) &&
                    MessageBox.Show(
                        string.Format(WindowMessages.STORED_DATA_EXISTS_MSG, "članih"),
                        WindowMessages.STORED_DATA_EXISTS_TITLE,
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Question
                        ) == DialogResult.No
                    )
                {
                    return;
                }
            }

            string line;

            using (var db = new FeeStatusesDBContext())
            {
                var memberData = new StreamReader(fullFilePath, encoding);

                if (db.Member.Any())
                {
                    var diffForm = new ImportMembersDiffForm(memberData);
                    if (diffForm.ShowDialog() == DialogResult.Cancel)
                    {
                        diffForm.Dispose();
                        return;
                    }
                }

                memberData = new StreamReader(fullFilePath, encoding);

                while ((line = memberData.ReadLine()) != null)
                {
                    string[] lineData = line.Split(';');

                    try
                    {
                        string   vulkanId    = lineData[0];
                        string   name        = lineData[2];
                        string   surname     = lineData[1];
                        DateTime dateOfBirth = DateTime.ParseExact(lineData[4], "d.M.yyyy", CultureInfo.InvariantCulture);
                        string   address     = lineData[6] + ", " + lineData[8] + " " + lineData[9];

                        string genderString = lineData[3].ToUpperInvariant();
                        bool   gender       = genderString.StartsWith("M"); // true == moski, false == zenska

                        bool mustPay = SetMustPayStatus(gender, dateOfBirth);

                        // TODO updating
                        Member existing;
                        if ((existing = db.Member.Find(vulkanId)) != null) // if exists member with VulkanID
                        {
                            existing.Name        = name;
                            existing.Surname     = surname;
                            existing.DateOfBirth = dateOfBirth;
                            existing.Address     = address;
                            existing.Gender      = gender;
                            existing.MustPay     = mustPay;
                            //existing.Active = true;
                        }
                        else
                        {
                            db.Member.Add(
                                new Member
                            {
                                VulkanID    = vulkanId,
                                Name        = name,
                                Surname     = surname,
                                DateOfBirth = dateOfBirth,
                                Address     = address,
                                Gender      = gender,
                                MustPay     = mustPay,
                                Active      = true
                            }
                                );
                        }

                        idList.Add(vulkanId);
                    }
                    catch (FormatException ex)
                    {
                        Debug.WriteLine(
                            "Datum rojstva ni v pravilni obliki. Trenutna vrstica je verjetno glava podatkov.");
                        Debug.WriteLine(ex.StackTrace);
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex.StackTrace);
                    }
                }

                if (dataExists)
                {
                    // mark those members that were not in the import file as inactive
                    db.Member.Where(m => !idList.Contains(m.VulkanID)).ToList().ForEach(m => m.Active = false);
                }

                db.SaveChanges();
            }
        }
        private void ImportPaymentHistory(string fullFilePath)
        {
            string line;
            var    file = new StreamReader(fullFilePath, Encoding.UTF8);

            try
            {
                using (var db = new FeeStatusesDBContext())
                {
                    while ((line = file.ReadLine()) != null)
                    {
                        string[] lineData = line.Split(';');

                        short  year   = 2001;
                        Member member = db.Member.Find(lineData[0]);
                        if (member != null && member.Gender) // moski
                        {
                            for (int i = 8; i < 20; i++)
                            {
                                string stat = lineData[i];
                                var    log  = new FeeLogs
                                {
                                    Member = member,
                                    Year   = year
                                };

                                switch (stat)
                                {
                                case "DA":
                                    log.PaymentStatusID = PaymentStatus.PLACAL;
                                    break;

                                case "NE":
                                    log.PaymentStatusID = PaymentStatus.NI_PLACAL;
                                    break;

                                case "VETERAN":
                                    log.PaymentStatusID = PaymentStatus.VETERAN;
                                    break;

                                case "XXX":
                                    log.PaymentStatusID = PaymentStatus.MLADOLETNIK;
                                    break;

                                default:
                                    if (member.GetMemberAgeForYear(year) < 18)
                                    {
                                        log.PaymentStatusID = PaymentStatus.MLADOLETNIK;
                                    }
                                    else if (member.GetMemberAgeForYear(year) >= 60)
                                    {
                                        log.PaymentStatusID = PaymentStatus.VETERAN;
                                    }
                                    else
                                    {
                                        log.PaymentStatusID = PaymentStatus.NI_PODATKA;
                                    }
                                    break;
                                }

                                member.FeeLogs.Add(log);
                                year++;
                            }
                        }
                    }

                    db.SaveChanges();
                }
            }
            catch (DbEntityValidationException e)
            {
                foreach (DbEntityValidationResult eve in e.EntityValidationErrors)
                {
                    Debug.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                    eve.Entry.Entity.GetType().Name, eve.Entry.State);
                    foreach (DbValidationError ve in eve.ValidationErrors)
                    {
                        Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                        ve.PropertyName, ve.ErrorMessage);
                    }
                }
                throw;
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.StackTrace);
            }

            BindPaymentsDataGridView(onlyMustPayers, includeDeleted);
        }