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();
            }
        }
        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);
        }
        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();
            }
        }
Ejemplo n.º 4
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();
            }
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 6
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();
            }
        }
Ejemplo n.º 7
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();
            }
        }
        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();
            }
        }