Пример #1
0
 public bool ExistsFeeLogForYear(int year)
 {
     using (var db = new FeeStatusesDBContext())
     {
         return(FeeLogs.Any(fl => fl.Year == (short)year));
     }
 }
        private void BindMembersDataGridView(bool onlyMustPayers, bool includeDeleted)
        {
            UpdateMustPayStatus();

            using (var db = new FeeStatusesDBContext())
            {
                membersBindingSource.DataSource = new SortableBindingList<MemberViewModel>
                    (
                    db.Member.
                        Where(m => !onlyMustPayers || m.MustPay).
                        Where(m => m.Active || includeDeleted).
                        OrderBy(m => m.Surname).
                        ThenBy(m => m.Name).
                        Select(m => new MemberViewModel
                                        {
                                            VulkanID = m.VulkanID,
                                            Surname = m.Surname,
                                            Name = m.Name,
                                            Address = m.Address,
                                            DateOfBirth = m.DateOfBirth,
                                            Gender = m.Gender ? "M" : "Ž",
                                            MustPay = m.MustPay ? "DA" : "NE",
                                            Active = m.Active
                                        }).ToList()
                    );
            }
            membersDataGridView.DataSource = membersBindingSource;

            membersDataGridView.Columns["Active"].Visible = false;

            ClearSelection(membersDataGridView);
        }
        public static List<SelectedYearNonPayersReportModel> SelectedYearNonPayersDataSet(Dictionary<string, object> parameters)
        {
            using (var db = new FeeStatusesDBContext())
            {
                var dateTime = parameters["SelectedYear"] as DateTime?;
                var year = dateTime.HasValue ? dateTime.Value.Year : 0;

                return
                    db.FeeLogs
                        .Where(l => 
                               l.Year == year &&
                               l.PaymentStatusID == PaymentStatus.NI_PLACAL &&
                               l.Member.MustPay &&
                               l.Member.Active
                        )
                        .Select(x => 
                                new SelectedYearNonPayersReportModel
                                    {
                                        VulkanID = x.Member.VulkanID,
                                        Name = x.Member.Name,
                                        Surname = x.Member.Surname
                                    }
                        )
                        .ToList();
            }
        }
        public static List<RegularNonPayersReportModel> RegularNonPayersDataSet(Dictionary<string, object> parameters)
        {
            using (var db = new FeeStatusesDBContext())
            {
                var dateTimeFrom = parameters["FromYear"] as DateTime?;
                var yearFrom = dateTimeFrom.HasValue ? dateTimeFrom.Value.Year : 0;

                var dateTimeTo = parameters["ToYear"] as DateTime?;
                var yearTo = dateTimeTo.HasValue ? dateTimeTo.Value.Year : 0;

                var logsList = db.FeeLogs
                                   .Where(l =>
                                          l.Year >= yearFrom &&
                                          l.Year <= yearTo &&
                                          l.PaymentStatusID == PaymentStatus.NI_PLACAL &&
                                          l.Member.MustPay &&
                                          l.Member.Active
                                    )
                                    .ToList();

                return logsList
                           .GroupBy(l => l.Member)
                           .Select(group =>
                                   new RegularNonPayersReportModel
                                   {
                                       VulkanID = group.Key.VulkanID,
                                       Name = group.Key.Name,
                                       Surname = group.Key.Surname,
                                       Count = group.Count(),
                                       Years = group.Select(l => l.Year.ToString()).Aggregate((y1, y2) => String.Join(", ", y1, y2))
                                   }
                           )
                           .ToList();
            }
        }
        private void BindMembersDiffDataGridView(StreamReader memberData)
        {
            var membersDiff = new List<MemberDiffViewModel>();
            newMembers = new List<Member>();

            using (var db = new FeeStatusesDBContext())
            {
                string line;

                while ((line = memberData.ReadLine()) != null)
                {
                    var lineData = line.Split(';');

                    try
                    {
                        var vulkanId = lineData[0];
                        var name = lineData[2];
                        var surname = lineData[1];
                        var dateOfBirth = DateTime.ParseExact(lineData[4], "d.M.yyyy", CultureInfo.InvariantCulture);
                        var address = lineData[6] + ", " + lineData[8] + " " + lineData[9];
                        var gender = lineData[3].Equals("Moški"); // true == moski, false == zenska

                        newMembers.Add(
                            new Member
                                {
                                    VulkanID = vulkanId,
                                    Name = name,
                                    Surname = surname,
                                    DateOfBirth = dateOfBirth,
                                    Address = address,
                                    Gender = gender
                                }
                            );
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex.StackTrace);
                    }
                }

                var members = db.Member;
                foreach (var member in members)
                {
                    membersDiff.Add(
                        new MemberDiffViewModel(
                            member,
                            newMembers.FirstOrDefault(m => m.VulkanID == member.VulkanID)
                        )
                    );
                }

                var temp = newMembers.Where(m => !members.Select(x => x.VulkanID).Contains(m.VulkanID));
                membersDiff.AddRange(
                    temp.Select(t => new MemberDiffViewModel(null, t))
                );
            }

            membersDiffDataGridView.DataSource = new SortableBindingList<MemberDiffViewModel>(membersDiff);
        }
        public void InitializeDataGridView(List<BankExportDocumentSelectionViewModel> docs)
        {
            var memberCol = dataGridView1.Columns["Member"] as DataGridViewComboBoxColumn;
            if (memberCol != null)
            {
                using (var db = new FeeStatusesDBContext())
                {
                    memberCol.DataSource =
                        db.Member
                            .Where(m => m.MustPay && m.Active)
                            .OrderBy(m => m.Surname)
                            .ThenBy(m => m.Name)
                            .ToList();

                    memberCol.ValueMember = "OldVulkanID";
                    memberCol.DisplayMember = "SurnameAndNameWithVulkanID";
                    memberCol.AutoComplete = true;
                }
            }

            dataGridView1.DataSource = docs;
            ClearSelection();
        }
        private void FillYearsList()
        {
            using (var db = new FeeStatusesDBContext())
            {
                IOrderedQueryable<Member> members =
                    db.Member.Where(
                        m => m.MustPay && m.Active && m.FeeLogs.Any(fl => fl.PaymentStatusID == PaymentStatus.NI_PLACAL))
                        .OrderBy(m => m.Surname).ThenBy(m => m.Name);
                List<FeeLogs> feeLogs =
                    members.SelectMany(m => m.FeeLogs.Where(fl => fl.PaymentStatusID == PaymentStatus.NI_PLACAL)).ToList
                        ();

                if (feeLogs.Count > 0)
                {
                    maxYear = feeLogs.Max(l => l.Year);
                    minYear = feeLogs.Min(l => l.Year);

                    yearsGlobal = Enumerable.Range(minYear, maxYear - minYear + 1);
                }
            }
        }
        private ReportDataSource GetReportDataSet()
        {
            var debtors = new List<DebtorReportModel>();

            using (var db = new FeeStatusesDBContext())
            {
                foreach (DataGridViewRow row in paymentDebtsDataGridView.Rows)
                {
                    object[] data = (row.DataBoundItem as DataRowView).Row.ItemArray;
                    var cols = new List<int>();
                    for (int i = 0; i < data.Length; i++)
                    {
                        if (data[i].Equals(true))
                        {
                            cols.Add(i);
                        }
                    }

                    if (cols.Count > 0)
                    {
                        Member member = db.Member.Find(data[0].ToString());
                        var debtor = new DebtorReportModel
                                         {
                                             RepDefinition =
                                                 ConfigHelper.GetConfigValue<string>(ConfigFields.DEBTS_TEMPLATE),
                                             FirstName = member.Name,
                                             LastName = member.Surname,
                                             DebtSum =
                                                (
                                                    member.Gender
                                                    ? ConfigHelper.GetConfigValue<decimal>(ConfigFields.ZNESEK_CLANI)
                                                    : ConfigHelper.GetConfigValue<decimal>(ConfigFields.ZNESEK_CLANICE)
                                                ) * cols.Count
                                         };

                        var yearsList = new List<short>();
                        foreach (int c in cols)
                        {
                            yearsList.Add(short.Parse(paymentDebtsDataGridView.Columns[c].HeaderText));
                        }

                        debtor.YearsList = yearsList;

                        debtors.Add(debtor);
                    }
                }
            }

            return new ReportDataSource("DataSet1", debtors);
        }
        public void BindPaymentsDataGridView(bool onlyMustPayers, bool includeDeleted)
        {
            paymentsDataGridView.CellValueChanged -= PaymentsDataGridView_CellValueChanged;

            using (var db = new FeeStatusesDBContext())
            {
                var members =
                    db.Member.
                        Where(m => !onlyMustPayers || m.MustPay).
                        Where(m => m.Active || includeDeleted).
                        OrderBy(m => m.Surname).
                        ThenBy(m => m.Name);

                var feeLogs = members.SelectMany(m => m.FeeLogs).ToList();

                var paymentStatuses = db.PaymentStatus.ToList();
                IEnumerable<int> years = null;
                if (feeLogs.Count > 0)
                {
                    int maxYear = feeLogs.Max(l => l.Year);
                    int minYear = feeLogs.Min(l => l.Year);

                    years = Enumerable.Range(minYear, maxYear - minYear + 1);
                    DataGridViewComboBoxColumn col;
                    foreach (int year in years)
                    {
                        if (!paymentsDataGridView.Columns.Contains("Year" + year))
                        {
                            col = new DataGridViewComboBoxColumn
                                      {
                                          DataSource = paymentStatuses,
                                          Name = "Year" + year,
                                          HeaderText = year.ToString(),
                                          DisplayMember = "Text",
                                          ValueMember = "PaymentStatusID",
                                          DataPropertyName = "Year" + year,
                                          FlatStyle = FlatStyle.Flat
                                      };
                            paymentsDataGridView.Columns.Add(col);
                        }
                    }
                }

                // create a DataTable to hold our data ...
                DataTable dt = CreateDataTable(years);

                object[] values;
                foreach (Member member in members)
                {
                    values =
                        years != null
                            ? new object[5 + years.Count()]
                            : new object[5];

                    values[0] = member.Active;
                    values[1] = member.VulkanID;
                    values[2] = member.Surname;
                    values[3] = member.Name;
                    values[4] = string.Format("{0} ({1} let)", member.DateOfBirth.ToString("dd.MM.yyyy"), member.GetMemberAgeForCurrentYear());

                    if (years != null)
                    {
                        int i = 0;
                        foreach (int year in years)
                        {
                            FeeLogs log = member.FeeLogs.FirstOrDefault(l => l.Year == year);
                            values[5 + i] =
                                log != null
                                    ? log.PaymentStatusID
                                    : PaymentStatus.NI_PODATKA;
                            i++;
                        }
                    }

                    dt.Rows.Add(values);
                }

                paymentsDataGridView.DataSource = dt;
                ClearSelection(paymentsDataGridView);
            }

            paymentsDataGridView.CellValueChanged += PaymentsDataGridView_CellValueChanged;
        }
        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();
            }
        }
Пример #12
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);
        }
        public static List<BankExportDocumentSelectionViewModel> TryParseTKDISDocument(string filePath)
        {
            using (var db = new FeeStatusesDBContext())
            {
                var file = new StreamReader(filePath, Encoding.UTF8);
                var tempList = new List<BankExportDocument>();

                try
                {
                    string line;
                    while ((line = file.ReadLine()) != null)
                    {
                        tempList.Add(new BankExportDocument(line));
                    }
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.StackTrace);
                }

                IQueryable<string> vulkanIds = db.Member.Where(m => m.MustPay && m.Active).Select(m => m.VulkanID);
                IEnumerable<Member> members = db.Member.AsEnumerable();
                var retList = new List<BankExportDocumentSelectionViewModel>();

                tempList.
                    Where(l => l.OznakaKnjizenja == "20").
                    ToList().
                    ForEach(l =>
                                {
                                    int? year = null;
                                    string vulkanId = null;

                                    string[] split = l.SklicOdobritve.Split('-');
                                    // || nazivPartnerja == permutations(name, surname)

                                    if (
                                        (split.Length == 2 && vulkanIds.Contains(split[1])) ||
                                        (members.Any(m =>
                                                     l.NazivPartnerja.Equals
                                                         (
                                                             m.NameUpperWOSumniki +
                                                             " " +
                                                             m.SurnameUpperWOSumniki
                                                         )
                                                     ||
                                                     l.NazivPartnerja.Equals
                                                         (
                                                             m.SurnameUpperWOSumniki +
                                                             " " +
                                                             m.NameUpperWOSumniki
                                                         ))
                                        )
                                        )
                                    {
                                        if (l.SklicOdobritve.Contains('-'))
                                        {
                                            year = int.Parse(l.SklicOdobritve.Split('-')[0]);
                                            vulkanId = l.SklicOdobritve.Split('-')[1];
                                        }

                                        retList.Add(
                                            new BankExportDocumentSelectionViewModel
                                                {
                                                    Member = vulkanId,
                                                    Years =
                                                        year.HasValue
                                                            ? year.Value.ToString(CultureInfo.InvariantCulture)
                                                            : "",
                                                    BankDocData =
                                                        l.NazivPartnerja + "; " + l.Namen + "; " + l.Znesek + "€",
                                                    Warning =
                                                        l.Znesek > 10 ||
                                                        vulkanId == null ||
                                                        !year.HasValue,
                                                    Selected =
                                                        vulkanId != null
                                                        && year.HasValue
                                                        && l.Znesek == 10
                                                }
                                            );
                                    }
                                });

                return retList;
            }
        }
Пример #14
0
        public void InitializeDataGridView(int year, bool includeDebts)
        {
            var docs = new List<UPNDocument>();
            using (var db = new FeeStatusesDBContext())
            {
                var memberQuery = 
                    db.Member.
                    Where(m => m.MustPay && m.Active).
                    OrderBy(m => m.Surname).
                    ThenBy(m => m.Name);

                foreach (var member in memberQuery) // obvezniki za plačevanje članarine
                {
                    docs.Add(
                        new UPNDocument
                            {
                                BremeIme = String.Format(BREME_IME, member.Surname, member.Name, member.Address), // član/plačnik
                                DobroIBAN = ConfigHelper.GetConfigValue<string>(ConfigFields.IBAN_PREJEMNIKA), // IBAN prejemnika
                                DobroModel = DOBRO_MODEL, // model sklica
                                DobroSklic = String.Format(BREME_SKLIC, DateTime.Now.Year, member.VulkanID), // sklic == 'ID člana'-'tekoče leto'
                                DobroIme = ConfigHelper.GetConfigValue<string>(ConfigFields.NAZIV_DRUSTVA), // prejemnik
                                DobroBIC = ConfigHelper.GetConfigValue<string>(ConfigFields.BIC_BANKE), // bic banke
                                Znesek = 
                                    (
                                        includeDebts
                                        ? (
                                            member.FeeLogs
                                                .Count(
                                                    fl =>
                                                        (ConfigHelper.GetConfigValue<int>(ConfigFields.OPOMINI_OD) == 0 || fl.Year >= ConfigHelper.GetConfigValue<int>(ConfigFields.OPOMINI_OD)) &&
                                                        (ConfigHelper.GetConfigValue<int>(ConfigFields.OPOMINI_DO) == 0 || fl.Year <= ConfigHelper.GetConfigValue<int>(ConfigFields.OPOMINI_DO)) &&
                                                        fl.PaymentStatusID == PaymentStatus.NI_PLACAL
                                                )
                                        )
                                        : (
                                            member.FeeLogs
                                                .Count(
                                                    fl =>
                                                        fl.Year == year &&
                                                        fl.PaymentStatusID == PaymentStatus.NI_PLACAL
                                                )
                                        )
                                    )
                                    *
                                    (
                                        member.Gender
                                        ? ConfigHelper.GetConfigValue<decimal>(ConfigFields.ZNESEK_CLANI)
                                        : ConfigHelper.GetConfigValue<decimal>(ConfigFields.ZNESEK_CLANICE)
                                    ),
                                //DatumPlacila = DateTime.Now.ToString("dd.MM.yyyy"), // rok plačila
                                Namen = String.Format(NAMEN, year), // namen
                                KodaNamena = KODA_NAMENA, // koda namena
                                Member = member // celotni Member objekt
                            }
                        );
                }
            }

            documentListDataGridView.DataSource = new SortableBindingList<UPNDocument>(docs);

            CreateHeaderCheckBox();
            UnCheckAllRows(false);
            ClearSelection(documentListDataGridView);
            SelectRecords(year, true);
        }
Пример #15
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();
            }
        }
Пример #16
0
        private void PrepareDataForSelectedYearRangeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var allYears = new List<int>();
            using (var db = new FeeStatusesDBContext())
            {
                var feeLogsQuery =
                    db.Member.
                        Where(
                            m =>
                            m.Active &&
                            m.MustPay &&
                            m.FeeLogs.
                                Any(
                                    fl =>
                                    fl.PaymentStatusID == PaymentStatus.NI_PLACAL
                                )
                        ).
                        SelectMany(m => m.FeeLogs);

                allYears = feeLogsQuery.OrderBy(fl => fl.Year).Select(fl => fl.Year).Distinct().ToList();

            }

            var selectYears = new SelectYearRange(allYears);

            if (selectYears.ShowDialog() == DialogResult.OK)
            {
                InitializeDataGridView(selectYears.Years);
            }
        }
Пример #17
0
        private void SelectRecords(int year, bool includeDebts)
        {
            using (var db = new FeeStatusesDBContext())
            {
                IQueryable<string> idList;

                if (includeDebts)
                {
                    var opominiOdYear = ConfigHelper.GetConfigValue<int>(ConfigFields.OPOMINI_OD);
                    var opominiDoYear = ConfigHelper.GetConfigValue<int>(ConfigFields.OPOMINI_DO);

                    idList = db.Member.
                        Where(m =>
                              m.MustPay &&
                              m.Active &&
                              m.FeeLogs.
                                  Where(fl =>
                                      (opominiOdYear == 0 || fl.Year >= opominiOdYear) &&
                                      (opominiDoYear == 0 || fl.Year <= opominiDoYear)
                                  ).
                                  Any(fl =>
                                      fl.PaymentStatusID == PaymentStatus.NI_PLACAL
                                  )
                        ).
                        Select(m => m.VulkanID);
                }
                else
                {
                    idList = db.Member.
                        Where(m =>
                              m.MustPay &&
                              m.Active &&
                              m.FeeLogs.
                                  Where(fl =>
                                        fl.Year == year
                                  ).
                                  Any(fl =>
                                      fl.PaymentStatusID == PaymentStatus.NI_PLACAL
                                  )
                        ).
                        Select(m => m.VulkanID);
                }

                for (var i = 0; i < documentListDataGridView.Rows.Count; i++)
                {
                    var row = documentListDataGridView.Rows[i].DataBoundItem as UPNDocument;
                    if (row == null) continue;

                    if (idList.Contains(row.DobroSklic.Substring(5)))
                    {
                        row.Selected = true;
                    }
                }
            }

            documentListDataGridView.Refresh();
        }
Пример #18
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();
            }
        }
        public void BindPaymentDebtsDataGridView(int? min, int? max, bool allYears)
        {
            using (var db = new FeeStatusesDBContext())
            {
                var members =
                    allYears
                        ? db.Member.Where(
                            m =>
                            m.MustPay && m.Active && m.FeeLogs.Any(fl => fl.PaymentStatusID == PaymentStatus.NI_PLACAL))
                              .OrderBy(m => m.Surname).ThenBy(m => m.Name)
                        : db.Member.Where(
                            m =>
                            m.MustPay && m.Active &&
                            m.FeeLogs.Any(
                                fl => fl.PaymentStatusID == PaymentStatus.NI_PLACAL && fl.Year >= min && fl.Year <= max))
                              .OrderBy(m => m.Surname).ThenBy(m => m.Name);

                var feeLogs =
                    allYears
                        ? members.SelectMany(m => m.FeeLogs.Where(fl => fl.PaymentStatusID == PaymentStatus.NI_PLACAL)).
                              ToList() // tudi NI_PODATKA ??
                        : members.SelectMany(
                            m =>
                            m.FeeLogs.Where(
                                fl => fl.PaymentStatusID == PaymentStatus.NI_PLACAL && fl.Year >= min && fl.Year <= max))
                              .ToList(); // tudi NI_PODATKA ??

                IEnumerable<int> yearsLocal = null;
                if (feeLogs.Count > 0)
                {
                    maxYear = max.HasValue ? max.Value : feeLogs.Max(l => l.Year);
                    minYear = min.HasValue ? min.Value : feeLogs.Min(l => l.Year);

                    yearsLocal = Enumerable.Range(minYear, maxYear - minYear + 1);

                    if (yearsGlobal == null)
                    {
                        yearsGlobal = yearsLocal;
                    }

                    DataGridViewCheckBoxColumn col;

                    for (int i = 0; i < yearsLocal.Count(); i++)
                    {
                        int year = yearsLocal.ElementAt(i);
                        if (!paymentDebtsDataGridView.Columns.Contains("Year" + year))
                        {
                            col = new DataGridViewCheckBoxColumn
                                      {
                                          Name = "Year" + year,
                                          HeaderText = year.ToString(CultureInfo.InvariantCulture),
                                          DataPropertyName = "Year" + year
                                      };
                            paymentDebtsDataGridView.Columns.Insert(2 + i, col);
                        }
                    }
                }

                // create a DataTable to hold our data ...
                DataTable dt = CreateDataTable(yearsLocal);

                object[] values;
                foreach (Member member in members)
                {
                    values = new object[yearsLocal.Count() + 2];
                    // +2 = member.OldVulkanID in member.OldSurname + " " + member.OldName

                    values[0] = member.VulkanID;
                    values[1] = member.Surname + " " + member.Name;

                    IEnumerable<int> logs =
                        member.FeeLogs.Where(fl => fl.PaymentStatusID == PaymentStatus.NI_PLACAL).Select(fl => fl.Year);
                    for (int i = 2; i < values.Length; i++)
                    {
                        if (logs.Contains(yearsLocal.ElementAt(i - 2)))
                        {
                            values[i] = true;
                        }
                        else
                        {
                            values[i] = DBNull.Value;
                        }
                    }

                    dt.Rows.Add(values);
                }

                paymentDebtsDataGridView.DataSource = dt;
                ClearSelection(paymentDebtsDataGridView);
            }
        }
        public static List<SelectedYearStatisticsReportModel> SelectedYearStatisticsDataSet(Dictionary<string, object> parameters)
        {
            using (var db = new FeeStatusesDBContext())
            {
                var dateTime = parameters["SelectedYear"] as DateTime?;
                var year = dateTime.HasValue ? dateTime.Value.Year : 0;

                var list =
                    db.FeeLogs
                        .Where(l =>
                               l.Year == year && l.Member.MustPay
                        )
                        .Select(l =>
                                new SelectedYearStatisticsReportModel
                                    {
                                        PaymentStatusID = l.PaymentStatusID
                                    }
                        )
                        .ToList();

                foreach (var obj in list)
                {
                    obj.PaymentStatusDesc = PaymentStatus.GetPaymentStatusText(obj.PaymentStatusID);
                }

                return list;
            }
        }
        public static List<BankExportDocumentSelectionViewModel> TryParseSepaXMLDocument(string filePath)
        {
            using (var db = new FeeStatusesDBContext())
            {
                XmlReader reader =
                    XmlReader.Create(
                        File.OpenRead(filePath));
                var serializer =
                    new XmlSerializer(
                        typeof (Document));
                var obj = (Document) serializer.Deserialize(reader);

                var retList = new List<BankExportDocumentSelectionViewModel>();
                IQueryable<string> vulkanIds = db.Member.Where(m => m.MustPay && m.Active).Select(m => m.VulkanID);
                IEnumerable<Member> members = db.Member.AsEnumerable();

                obj.BkToCstmrStmt.Stmt.
                    SelectMany(s => s.Ntry).
                    ToList().
                    Where(n => n.CdtDbtInd == CreditDebitCode.CRDT).
                    ToList().
                    ForEach(n =>
                                {
                                    int? year = null;
                                    string vulkanId = null;

                                    EntryTransaction2 txDtls = n.NtryDtls.First().TxDtls.First();
                                    string @ref = txDtls.RmtInf.Strd.First().CdtrRefInf.Ref;
                                    string refInfo = txDtls.RmtInf.Strd.First().AddtlRmtInf.First();
                                    PartyIdentification32 dbtr = txDtls.RltdPties.Dbtr; // info o placniku

                                    string[] split = @ref.Split('-');
                                    if (
                                        (split.Length == 2 && vulkanIds.Contains(split[1])) ||
                                        (members.Any(m =>
                                                     dbtr.Nm.Equals
                                                         (
                                                             m.NameUpperWOSumniki +
                                                             " " +
                                                             m.SurnameUpperWOSumniki
                                                         )
                                                     ||
                                                     dbtr.Nm.Equals
                                                         (
                                                             m.SurnameUpperWOSumniki +
                                                             " " +
                                                             m.NameUpperWOSumniki
                                                         ))
                                        )
                                        )
                                    {
                                        string subRef = @ref.Substring(4); // remove SIXX

                                        if (subRef.Contains('-'))
                                        {
                                            year = int.Parse(subRef.Split('-')[0]);
                                            vulkanId = subRef.Split('-')[1];
                                        }

                                        retList.Add(new BankExportDocumentSelectionViewModel
                                                        {
                                                            Member = vulkanId,
                                                            Years =
                                                                year.HasValue
                                                                    ? year.Value.ToString(CultureInfo.InvariantCulture)
                                                                    : "",
                                                            BankDocData =
                                                                dbtr.Nm + "; " + refInfo + "; " + n.Amt.Value + "€",
                                                            Warning =
                                                                n.Amt.Value > 10 ||
                                                                vulkanId == null ||
                                                                !year.HasValue,
                                                            Selected =
                                                                vulkanId != null &&
                                                                year.HasValue &&
                                                                n.Amt.Value == 10
                                                        });
                                    }
                                }
                    );
                return retList;
            }
        }
        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);
        }
        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();
            }
        }
Пример #24
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();
            }
        }