/// <summary>
        /// Searching information using various parameter.
        /// </summary>
        /// <param name="path"></param>
        /// <param name="visitors"></param>
        /// <param name="remove"></param>
        /// <param name="add"></param>
        /// <param name="cardNumber"></param>
        public static void ManipulateData(string path, Visitor visitors)
        {
            var visitorsList = ReadFromCsv.ReadFromCsvToList(path);

            File.WriteAllText(AddVisitor.uncheckedVisitorPath, string.Empty);

            var visitorsListSorted = sortList(visitorsList);
            int found = binarySearchList(visitorsListSorted, visitors);

            if (found >= 0)
            {
                visitorsListSorted.Remove(visitorsListSorted[found]);
            }

            if (!File.Exists(AddVisitor.uncheckedVisitorPath))
            {
                return;
            }
            using (var streamWriter = new StreamWriter(AddVisitor.uncheckedVisitorPath, true))
            {
                streamWriter.WriteLine(
                    "cardNumber,name,contactNo,address,occupation,inTime,day,inTimeExact,outTimeExact,totalTime");
                foreach (var visitor in visitorsListSorted)
                {
                    streamWriter.WriteLine(visitor
                                           .ToString());
                }
            }
        }
        private void LoadDataToTable()
        {
            List <Visitor> visitorsList = ReadFromCsv.ReadFromCsvToList(AddVisitor.uncheckedVisitorPath);

            foreach (var visitor in visitorsList)
            {
                visitorBindingSource.Add(new Visitor(visitor.cardNumber, visitor.name, visitor.contactNo,
                                                     visitor.address, visitor.occupation, visitor.inTimeDate, visitor.day, visitor.inTimeExact,
                                                     visitor.outTimeExact, visitor.totalTime));
            }
        }
        public List <Visitor> individualData(string choosedDate)
        {
            List <Visitor> list           = new List <Visitor>();
            List <Visitor> outVisitorList = ReadFromCsv.ReadFromCsvToList(RecentlyVisit.OUT_VISITOR);

            foreach (var visitor in outVisitorList)
            {
                if (visitor.inTimeExact == choosedDate)
                {
                    list.Add(visitor);
                }
            }
            return(list);
        }
Пример #4
0
        private void Add_Click(object sender, EventArgs e)
        {
            const string OUT_VISITOR = @"C:\C# projects\WindowsFormsApp1\WindowsFormsApp1\CsvFile\OutVisitor.csv";

            string         cardNumberText = cardNumberTextField.Text.Trim();
            Visitor        visitor        = null;
            List <Visitor> listVisitor    = ReadFromCsv.ReadFromCsvToList(OUT_VISITOR);

            listVisitor = RecentlyVisit.sortList(listVisitor);

            for (int i = 0; i < listVisitor.Count; i++)
            {
                if (listVisitor[i].cardNumber == int.Parse(cardNumberText))
                {
                    visitor = listVisitor[i];
                    break;
                }
            }

            if (visitor != null)
            {
                visitor.inTimeDate   = DateTime.Now.ToString("yyyy MMMM dd");
                visitor.inTimeExact  = DateTime.Now.ToString("t");
                visitor.outTimeExact = "-";
                visitor.totalTime    = "-";
                AddVisitor.WriteListToCsv(visitor);
                MessageBox.Show(visitor.name + " is added.", "Added");
            }
            else
            {
                DialogResult dialogResult =
                    MessageBox.Show("Not found this card number. Want to regiter with new users ?  ", "No Result",
                                    MessageBoxButtons.YesNo);
                if (dialogResult == DialogResult.Yes)
                {
                    AddVisitor addVisitor = new AddVisitor();
                    addVisitor.Show();
                }
                else if (dialogResult == DialogResult.No)
                {
                    // keeping this for further use.
                }
            }
        }
        private void generateButtonReport_Click(object sender, EventArgs e)
        {
            string         choosedDate      = dateTimePicker.Value.ToString("yyyy MMMM dd");
            int            totalVisitor     = 0;
            string         exactTime        = null;
            int            totalTimeVisited = 0;
            List <Visitor> outVisitorList   = ReadFromCsv.ReadFromCsvToList(RecentlyVisit.OUT_VISITOR);

            foreach (var visitor in outVisitorList)
            {
                if (visitor.inTimeExact != choosedDate)
                {
                    continue;
                }
                exactTime = visitor.inTimeExact;
                totalVisitor++;
                totalTimeVisited += int.Parse(visitor.totalTime);
            }

            this.chart1.Series["Total visitor visited"].Points.Clear();
            this.chart1.Series["Total visitor visited"].Points.AddXY("Visitor", totalVisitor);
            totalVisitorInfoBindingSource.Clear();
            totalVisitorInfoBindingSource.Add(new TotalVisitorInfo(exactTime, "" + totalVisitor,
                                                                   "" + totalTimeVisited));
            List <Visitor>          individualDataList = individualData(choosedDate);
            List <TotalVisitorInfo> totalVisitorInfos  = new List <TotalVisitorInfo>();

            for (int i = 0; i < individualDataList.Count; i++)
            {
                totalVisitorInfos.Add(new TotalVisitorInfo(individualDataList[i].inTimeDate, individualDataList[i].name,
                                                           individualDataList[i].totalTime));
            }
            totalVisitorInfoBindingSource1.Clear();
            for (int i = 0; i < totalVisitorInfos.Count; i++)
            {
                totalVisitorInfoBindingSource1.Add(new TotalVisitorInfo(totalVisitorInfos[i].date,
                                                                        totalVisitorInfos[i].totalVisitor, totalVisitorInfos[i].totalTimes));
            }
        }
        private void saveButton_Click(object sender, EventArgs e)
        {
            string cardNumber    = cardNumberText.Text.Trim();
            string name          = nameText.Text.Trim();
            string contactNumber = contactText.Text.Trim();
            string address       = addressText.Text.Trim();
            string occupation    = OccupationText.Text.Trim();

            if (cardNumber.Length <= 0 || name.Length <= 0 || contactNumber.Length <= 0 || address.Length <= 0 ||
                occupation.Length <= 0)
            {
                MessageBox.Show("Text is not filled properly", "Error !");
                return;
            }

            int contactNumberInt = 0;

            try
            {
                contactNumberInt = int.Parse(contactNumber);
            }
            catch
            {
                MessageBox.Show("Invalid data inserted at contact number", "Error");
                return;
            }


            try
            {
                var uncheckedVisitorPath =
                    @"C:\C# projects\WindowsFormsApp1\WindowsFormsApp1\CsvFile\recentlyVisited.csv";

                IEnumerable <Visitor> lists = ReadFromCsv.ReadFromCsvToList(uncheckedVisitorPath);
                foreach (var list in lists)
                {
                    if (list.cardNumber == int.Parse(cardNumber))
                    {
                        throw new Exception();
                    }
                }
            }
            catch (Exception ke)
            {
                DialogResult dialogResult = MessageBox.Show("Card number matches\nDo you want to regenerate it ? ",
                                                            "Warning", MessageBoxButtons.YesNo);
                if (dialogResult == DialogResult.Yes)
                {
                    GenerateRandomNumberForCardNumber();
                }
                else
                {
                    return;
                }
            }

            cardNumber = cardNumberText.Text.Trim();
            string   day         = DateTime.Now.DayOfWeek.ToString();
            string   inTimeDate  = DateTime.Now.ToString("yyyy MMMM dd");
            string   inTimeExact = DateTime.Now.ToString("t");
            TimeSpan start       = TimeSpan.Parse("17:00"); // 5 PM
            TimeSpan end         = TimeSpan.Parse("10:00"); // 10 AM
            TimeSpan now         = DateTime.Now.TimeOfDay;

            if (day == DayOfWeek.Monday.ToString() || day == DayOfWeek.Tuesday.ToString() || day ==
                DayOfWeek.Wednesday.ToString() || day == DayOfWeek.Thursday.ToString() ||
                day == DayOfWeek.Friday.ToString())
            {
                if ((now < start) && (now > end))
                {
                    var visitor = new Visitor(int.Parse(cardNumber), name, contactNumberInt, address, occupation,
                                              inTimeDate,
                                              day, inTimeExact, "-", "-");
                    WriteListToCsv(visitor);
                    ClearTextBox();
                }
                else
                {
                    MessageBox.Show("Museum is now closed. come between 10 to 5", "Sorry");
                }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string   choosenDate = this.fromDate.Value.ToString("yyyy MMMM dd");
            DateTime date        = DateTime.Parse(choosenDate);
            //get year from the date
            int year = date.Date.Year;
            //set the first day of the year
            DateTime firstDay = new DateTime(year, 1, 1);
            // MessageBox.Show(year + ", " + date.Month + " " + date.Day);
            //get Day of the week
            DayOfWeek   day = date.DayOfWeek;
            CultureInfo cul = CultureInfo.CurrentCulture;
            //get no of week for the date
            int weekNo = cul.Calendar.GetWeekOfYear(date, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);
            //get no of day
            int       days            = (weekNo - 1) * 7;
            DateTime  dt1             = firstDay.AddDays(days);
            DayOfWeek dow             = dt1.DayOfWeek;
            DateTime  startDateOfWeek = dt1.AddDays(-(int)dow);
            DateTime  endDateOfWeek   = startDateOfWeek.AddDays(6);

            string         startDateOfWeekChoosen = startDateOfWeek.ToString("yyyy MMMM dd");
            string         endDateOfWeekChoosen   = endDateOfWeek.ToString("yyyy MMMM dd");
            List <Visitor> listVisitor            = ReadFromCsv.ReadFromCsvToList(RecentlyVisit.OUT_VISITOR);
            List <Visitor> choosenWeekVisitor     = new List <Visitor>();

            listVisitor = listVisitor.GroupBy(p => p.cardNumber).Select(group => group.First()).ToList();

            foreach (var visitor in listVisitor)
            {
                if (DateTime.Parse(visitor.inTimeExact) >= startDateOfWeek &&
                    DateTime.Parse(visitor.inTimeExact) <= endDateOfWeek)
                {
                    choosenWeekVisitor.Add(visitor);
                }
            }

            var totalVisitorInAWeek = choosenWeekVisitor.Count;

            this.totalVisitorLabel.Visible = true;
            this.label2.Visible            = true;
            this.totalVisitorLabel.Text    =
                startDateOfWeekChoosen + " to " + endDateOfWeekChoosen + " are " + totalVisitorInAWeek;
            List <WeekdayInfo> weekdayInfosLists = new List <WeekdayInfo>();

            int[] totalVisitor = new int[5];
            int[] totalMinutes = new int[5];
            foreach (var chosenVisitor in choosenWeekVisitor)
            {
                if (chosenVisitor.day == DayOfWeek.Monday.ToString())
                {
                    totalVisitor[0]++;
                    totalMinutes[0] += int.Parse(chosenVisitor.totalTime);
                }
                else if (chosenVisitor.day == DayOfWeek.Tuesday.ToString())
                {
                    totalVisitor[1]++;
                    totalMinutes[1] += int.Parse(chosenVisitor.totalTime);
                }
                else if (chosenVisitor.day == DayOfWeek.Wednesday.ToString())
                {
                    totalVisitor[2]++;
                    totalMinutes[2] += int.Parse(chosenVisitor.totalTime);
                }
                else if (chosenVisitor.day == DayOfWeek.Thursday.ToString())
                {
                    totalVisitor[3]++;
                    totalMinutes[3] += int.Parse(chosenVisitor.totalTime);
                }
                else if (chosenVisitor.day == DayOfWeek.Friday.ToString())
                {
                    totalVisitor[4]++;
                    totalMinutes[4] += int.Parse(chosenVisitor.totalTime);
                }
            }

            foreach (var chosenVisitor in choosenWeekVisitor)
            {
                if (chosenVisitor.day == DayOfWeek.Monday.ToString())
                {
                    weekdayInfosLists.Add(
                        new WeekdayInfo(chosenVisitor.day, "" + totalVisitor[0], "" + totalMinutes[0]));
                }
                else if (chosenVisitor.day == DayOfWeek.Tuesday.ToString())
                {
                    weekdayInfosLists.Add(
                        new WeekdayInfo(chosenVisitor.day, "" + totalVisitor[1], "" + totalMinutes[1]));
                }
                else if (chosenVisitor.day == DayOfWeek.Wednesday.ToString())
                {
                    weekdayInfosLists.Add(
                        new WeekdayInfo(chosenVisitor.day, "" + totalVisitor[2], "" + totalMinutes[2]));
                }
                else if (chosenVisitor.day == DayOfWeek.Thursday.ToString())
                {
                    weekdayInfosLists.Add(
                        new WeekdayInfo(chosenVisitor.day, "" + totalVisitor[3], "" + totalMinutes[4]));
                }
                else if (chosenVisitor.day == DayOfWeek.Friday.ToString())
                {
                    weekdayInfosLists.Add(
                        new WeekdayInfo(chosenVisitor.day, "" + totalVisitor[4], "" + totalMinutes[4]));
                }
            }

            weekdayInfosLists = weekdayInfosLists.GroupBy(p => p.weekday).Select(group => group.First()).ToList();
            this.weekdayInfoBindingSource.Clear();
            sortList(weekdayInfosLists);

            foreach (var weekdayData in weekdayInfosLists)
            {
                this.weekdayInfoBindingSource.Add(new WeekdayInfo(weekdayData.weekday, weekdayData.totalVisitor,
                                                                  weekdayData.totalDuration));
            }

            this.chart1.Series["totalVisitor"].Points.Clear();
            this.chart1.Series["totalDuration"].Points.Clear();

            foreach (var weekdayInBar in weekdayInfosLists)
            {
                this.chart1.Series["totalVisitor"].Points.AddXY(weekdayInBar.weekday, weekdayInBar.totalVisitor);
                this.chart1.Series["totalDuration"].Points.AddXY(weekdayInBar.weekday, weekdayInBar.totalDuration);
            }
        }