Пример #1
0
        /// <summary>
        /// This Method implements write records in file to csv-format.
        /// </summary>
        /// <param name="record">It is record from our list.</param>
        public void Write(FileCabinetApp.FileCabinetRecord record)
        {
            if (record == null)
            {
                throw new ArgumentNullException(nameof(record));
            }

            var recordString = new StringBuilder();

            recordString.Append($"{record.Id},");
            recordString.Append($"{record.FirstName},");
            recordString.Append($"{record.LastName},");
            recordString.Append($"{record.DateOfBirth.ToString("yyyy-MMM-dd", CultureInfo.InvariantCulture)},");
            recordString.Append($"{record.CabinetNumber},");
            recordString.Append($"{record.Salary},");
            recordString.Append($"{record.Category}");

            this.writer.WriteLine(recordString.ToString(), Encoding.Default);
        }
Пример #2
0
        static void Main(string[] args)
        {
            const int parameterIndex = 0;
            const int parameterValue = 1;

            const string outputTypeName    = "--output-type";
            const string outputPathName    = "--output";
            const string recordsAmountName = "--records-amount";
            const string startIdName       = "--start-id";

            const string outputTypeNameShort    = "-t";
            const string outputPathNameShort    = "-o";
            const string recordsAmountNameShort = "-a";
            const string startIdNameShort       = "-i";

            if (args[0].Contains('='))
            {
                foreach (var item in args)
                {
                    string[] parameters = item.Split('=', 2);

                    if (parameters[parameterIndex].Equals(outputTypeName))
                    {
                        if (parameters[parameterValue].Equals(OutputTypeCsv))
                        {
                            isCsv = true;
                        }

                        if (parameters[parameterValue].Equals(OutputTypeXml))
                        {
                            isXml = true;
                        }
                    }

                    if (parameters[parameterIndex].Equals(outputPathName))
                    {
                        if (isCsv)
                        {
                            path = parameters[parameterValue];
                        }
                        else if (isXml)
                        {
                            path = parameters[parameterValue];
                        }
                        else
                        {
                            Console.WriteLine("Incorrect Format!");
                            return;
                        }
                    }

                    if (parameters[parameterIndex].Equals(recordsAmountName))
                    {
                        amountRecords = Convert.ToInt32(parameters[parameterValue]);
                    }

                    if (parameters[parameterIndex].Equals(startIdName))
                    {
                        startId = Convert.ToInt32(parameters[parameterValue]);
                    }
                }
            }
            else
            {
                foreach (var item in args)
                {
                    if (args[TypeParameterIndex].Equals(outputTypeNameShort))
                    {
                        if (args[TypeParameterValue].Equals(OutputTypeCsv))
                        {
                            isCsv = true;
                        }

                        if (args[TypeParameterValue].Equals(OutputTypeXml))
                        {
                            isXml = true;
                        }
                    }

                    if (args[OutputParameterIndex].Equals(outputPathNameShort))
                    {
                        if (isCsv)
                        {
                            path = args[OutputParameterValue];
                        }
                        else if (isXml)
                        {
                            path = args[OutputParameterValue];
                        }
                        else
                        {
                            Console.WriteLine("Incorrect Format!");
                            return;
                        }
                    }

                    if (args[AmountParameterIndex].Equals(recordsAmountNameShort))
                    {
                        amountRecords = Convert.ToInt32(args[AmountParameterValue]);
                    }

                    if (args[StartIdParameterIndex].Equals(startIdNameShort))
                    {
                        startId = Convert.ToInt32(args[StartIdParameterValue]);
                    }
                }
            }

            var records = new FileCabinetApp.FileCabinetRecord[amountRecords];
            var list    = new List <FileCabinetApp.FileCabinetRecord>(amountRecords);

            for (int i = 0; i < amountRecords; i++)
            {
                var record = new FileCabinetApp.FileCabinetRecord
                {
                    Id            = startId,
                    FirstName     = GeneratorFirstName(),
                    LastName      = GeneratorLastName(),
                    DateOfBirth   = GeneratorDateOfBirth(),
                    CabinetNumber = GeneratorCabinetNumber(),
                    Salary        = GeneratorSalary(),
                    Category      = GeneratorCategory(),
                };

                startId++;

                records[i] = record;
                list.Add(record);
            }

            StreamWriter streamWriter;

            bool rewrite = false;

            if (File.Exists(path))
            {
                Console.Write("File is exist - rewrite " + path.Remove(0, 3) + "? [Y/n]");
                string result = Console.ReadLine();

                if (result == "Y")
                {
                    streamWriter = new StreamWriter(path, rewrite);
                }
                else
                {
                    return;
                }
            }
            else
            {
                streamWriter = new StreamWriter(path);
            }

            if (isCsv)
            {
                SaveToCsv(streamWriter, records);
            }

            if (isXml)
            {
                SaveToXml(streamWriter, list);
            }

            streamWriter.Close();



            Console.WriteLine(amountRecords + " records were written to " + path);

            Console.ReadLine();
        }