예제 #1
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, 6)))
                    {
                        row.Selected = true;
                    }
                }
            }

            documentListDataGridView.Refresh();
        }
예제 #2
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);
            }
        }
예제 #3
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();
            }
        }
예제 #4
0
        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 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();
            }
        }
예제 #6
0
        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);
            }
        }
예제 #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();
            }
        }
예제 #8
0
        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);
        }
예제 #9
0
        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());
            }
        }
        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 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();
            }
        }
        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));
        }
예제 #13
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);
        }
        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);
                }
            }
        }
예제 #15
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();
            }
        }
예제 #16
0
        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();
        }
예제 #17
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
                {
                    var dobroSklic = String.Format(BREME_SKLIC_12, DateTime.Now.Year, member.VulkanID);
                    dobroSklic = GenerateControlNumber(dobroSklic);

                    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_12,                                                        // model sklica
                        DobroSklic = dobroSklic,                                                            // sklic == 'tekoče leto'0'ID člana'0'kontrolna številka'
                        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,
                        VrsticaOCR = GenerateControlNumber(dobroSklic)
                    }
                        );
                }
            }

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

            CreateHeaderCheckBox();
            UnCheckAllRows(false);
            ClearSelection(documentListDataGridView);
            SelectRecords(year, true);
        }
        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);
            }
        }
예제 #19
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);
        }
예제 #21
0
        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);
            }
        }
예제 #22
0
        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);
            }
        }
        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;
        }