Структура Entity в порядке

Структура Entity в порядке

Исходный файл и имя файла - это исходный путь. Папка архива и имя файла архива - это папка назначения. Значение входного файла должно быть перемещено в целевой файл. Возникает ошибка при копировании файла из источника в место назначения. Отображение «Файл уже создан». Пожалуйста, дайте мне знать, как найти каталог с исходным файлом без жесткого кода. Как я могу записать действительные данные в другой файл в формате XML.

    using System; using System.Collections.Generic;using System.IO;
using System.Linq;using System.Security; using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Globalization;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Xml.Serialization;
using System.Xml;
using System.Xml.Linq;
using System.Text.RegularExpressions;
using EmployeeValidation;
using static EmployeeValidation.FundsValidatorException;

namespace FundsValidator
{
    public class empValidator
    {
        public bool ProcessData(string sourceFolder, string fileName, string archiveFolder, string archiveFileName, SqlConnection connection)
        {

            List<Order> Orders = ReadAllDataFromInputFile(sourceFolder,fileName);



            //Step 2
            //SetValidationFlag
            List<Order> ValidOrder = SetValidationFlag(Orders);

            //Step 3
            //InsertOrderData
            bool insertBit = InsertOrderData(ValidOrder, connection);

            //Step 4            
            //GetProductsCommission


            DataTable dtprodcomm = GetProductsCommission(connection);

            //Step 5
            //archive file
            bool archive = CopyToArchive( sourceFileName,  sourceFilePath,  archiveFileName,  archiveFilePath)

            return true;
        }


        public List<Order> ReadAllDataFromInputFile(string sourceFolder, string fileName)
        {
            List<Order> inputlist = null;

            {
                try
                {
                    inputlist = new List<Order>();
                    var inputlines = File.ReadAllLines(sourceFolder + fileName);
                    foreach (var item in inputlines)
                    {
                        string[] datas = item.Split(',');
                        Order orderdetails = new Order()
                        {
                            OrderId = datas[0],
                            SalesPersonId = datas[1],
                            OrderDate = Convert.ToDateTime(datas[2]).ToShortDateString(),
                            ModelNbr = datas[3],
                            Quantity = datas[4],
                            CustomerId = datas[5],
                            DeliveryDate = datas[6]
                        };
                        inputlist.Add(orderdetails);
                    }

                }
                catch(OrderProcessorException)
                {
                    throw new OrderProcessorException();
                }
            }


            return inputlist;
        }



        public List<Order> SetValidationFlag(List<Order> Orders)
        {
            List<Order> validList = null;

            validList = new List<Order>();

            int num = 0;

            DateTime dtOrderdate;
            DateTime dtdeliverydate;

            if (Orders != null && Orders.Count >0)
            {
                foreach(var item in Orders)
                {
                    if (int.TryParse(item.OrderId, out num) &&
                        item.SalesPersonId.StartsWith("SP") && item.SalesPersonId.Substring(2).Length == 3 && int.TryParse(item.SalesPersonId.Substring(2), out num) &&
                        DateTime.TryParse(item.OrderDate, out dtOrderdate) &&
                         item.ModelNbr.StartsWith("ML") && item.ModelNbr.Substring(2).Length == 3 && int.TryParse(item.ModelNbr.Substring(2), out num) &&
                        int.TryParse(item.Quantity, out num) && DateTime.TryParse(item.DeliveryDate, out dtdeliverydate) && (Convert.ToDateTime(item.DeliveryDate) - Convert.ToDateTime(item.OrderDate)).TotalDays > 7)
                    {
                        item.ValidFlag = "V";
                    }
                    else
                    {
                        item.ValidFlag = "E";
                    }

                    validList.Add(item);
                }

            }


            return validList;
        }

        public bool InsertOrderData(List<Order> Orders, SqlConnection connectionString)
        {
            bool bret = true;

            {
                if (Orders !=null && Orders.Count >0)
                {
                   foreach(var item in Orders)
                    {
                        using (SqlCommand command = connectionString.CreateCommand())
                        {
                            command.CommandText = "Insert into SBA.Orders(OrderId,SalesPersonId,OrderDate,ModelNbr,Quantity,CustomerId,Deliverydate,ValidFlag) Values('" + item.OrderId + "','" + item.SalesPersonId + "','" + item.OrderDate + "','" + item.ModelNbr + "','" + item.Quantity + "','" + item.CustomerId + "','" + item.DeliveryDate + "','" + item.ValidFlag + "')";
                            command.Connection = connectionString;
                            connectionString.Open();
                            int count = command.ExecuteNonQuery();
                            connectionString.Close();
                            if (count > 0)
                            {
                                bret = true;
                            }
                            else

                                bret = false;

                        }
                    }
                }
                else
                {
                    bret = false;
                }
            }

            return bret;



        }

        public DataTable GetProductsCommission(SqlConnection connectionString)
        {
            DataTable dtProductsCommission = null;

            using (SqlCommand command = connectionString.CreateCommand())
            {
                command.CommandText = "Select ModelNbr,Commission_Percentage,Base_Price from SBA.Product_Commission";
                command.Connection = connectionString;
                connectionString.Open();
                SqlDataAdapter da = new SqlDataAdapter(command);
                DataSet ds = new DataSet();
                da.Fill(ds);
                dtProductsCommission = ds.Tables[0];
            }
            return dtProductsCommission;

        }
       public bool InsertCommissionData(List<Order> Orders, DataTable dtProductsCommission, SqlConnection connectionString)
        {

            bool bret = true;

            if (Orders != null && Orders.Count > 0 && dtProductsCommission.Rows.Count > 0)
            {
                foreach (var item in Orders)
                {
                    if (item.ValidFlag == "V")
                    {
                        foreach (DataRow dr in dtProductsCommission.Rows)
                        {
                            float commamt = Convert.ToInt32(dr["Commission_Percentage"]) * Convert.ToInt32(dr["Base_Price"]) * Convert.ToInt32(item.Quantity);

                            using (SqlCommand cmd = connectionString.CreateCommand())
                            {
                                cmd.CommandText = "Insert into SBA.Order_Commission(OrderId,CommissionAmt) Values('" + item.OrderId + "','" + commamt + "')";
                                connectionString.Open();
                                cmd.ExecuteNonQuery();
                                connectionString.Close();
                                bret = true;
                            }

                        }
                    }
                }
            }

            else
            {
                bret = false;
            }

                    return bret;
        }


        public bool CopyToArchive(string sourceFileName, string sourceFilePath, string archiveFileName, string archiveFilePath)
        {
            bool bret = true;

            if (!File.Exists(archiveFilePath + archiveFileName))
            {
                File.Copy(sourceFilePath + sourceFileName, archiveFilePath + archiveFileName);

            }
            else
            {
                File.Delete(archiveFilePath + archiveFileName);

                File.Copy(sourceFilePath + sourceFileName, archiveFilePath + archiveFileName);
            }

            return bret;
        }
    }
} 

Структура Entity в порядке

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
32
2

Ответы 2

I have fixed this problem.Please refer this program for more details        

using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Xml.Linq;
    using System.Data.Sql;
    using System.Data.SqlClient;
    using System.Data;
    using System.Xml.Serialization;
    using System.Text.RegularExpressions;
    using System.Xml;

    namespace EmployeeValidation
    {
        public class FundsValidator
        {

            public void ProcessData(string FilePath, string FileName, SqlConnection connection, string errorFilename, string errorFilepath)
            {
                List<Funds> Alllstfunds = new List<Funds>();
                List<Funds> Validlstfunds = new List<Funds>();
                Alllstfunds= ReadValuesfromInputfile(FilePath, FileName);
                Validlstfunds = GetValidFunds(Alllstfunds,  errorFilename,  errorFilepath);
                SaveValidListToDB(Validlstfunds,connection);
                List<Funds> Removeddup= GerPerFundDetails(Validlstfunds);
                CalculateNavandSaveToDatabase(Removeddup,connection);



            }
            public List<Funds> ReadValuesfromInputfile(string FilePath, string FileName)
            {
                List<Funds> AllListfunds = new List<Funds>();
                string s1= null;
                StreamReader sw = File.OpenText(FilePath + FileName);
                while ((s1 = sw.ReadLine()) != null)
                {
                    Funds fund = new Funds();
                    string[] s = s1.Split(',');
                    fund.FundsID = s[0].ToString();
                    fund.SubfundID = s[1].ToString();
                    fund.Asset = s[2].ToString();
                    fund.La = s[3].ToString();
                    fund.o = s[4].ToString();
                    AllListfunds.Add(fund);

                }
                return AllListfunds;
            }

             public List<Funds> GetValidFunds(List<Funds> Alllstfunds, string errorFilename,string  errorFilepath)
             {
                 try
                 {
                     List<Funds> validlist = new List<Funds>();
                     List<Funds> Invalid = new List<Funds>();
                     foreach (Funds x in Alllstfunds)
                     {
                         bool valid = true;
                         valid = valid && (!string.IsNullOrEmpty(x.FundsID) && x.FundsID.StartsWith("F")) && x.FundsID.Length == 4 && x.FundsID.Substring(1).Length == 3 && x.FundsID.Substring(1).All(char.IsDigit);
                         valid = valid && (!string.IsNullOrEmpty(x.SubfundID)) && x.SubfundID.StartsWith("SF") && x.SubfundID.Length == 5 && x.SubfundID.Substring(2).Length == 3 && x.SubfundID.Substring(2).All(char.IsDigit);
                         valid = valid && (!string.IsNullOrEmpty(x.Asset)) && x.Asset.All(char.IsDigit);
                         valid = valid && (!string.IsNullOrEmpty(x.La)) && x.La.All(char.IsDigit);
                         valid = valid && (!string.IsNullOrEmpty(x.o)) && x.o.All(char.IsDigit);
                         if (valid)
                         {
                             validlist.Add(x);
                         }
                         else
                         {
                             Invalid.Add(x);
                         }
                     }
                     SaveInValidinErrorTxt(Invalid, errorFilename, errorFilepath);
                     return validlist;
                 }
                 catch (Exception ex)
                 {
                     throw new FundsValidatorException(ex.Message);
                 }
             }
            public void SaveInValidinErrorTxt(List<Funds> Invalid,string errorFilename,string errorFilepath)
            {
                if (Invalid.Count > 0 && Invalid != null)
                {
                    if (!File.Exists(errorFilepath + errorFilename))
                    {
                        var i=File.Create(errorFilepath + errorFilename);
                        i.Close();
                    }
                     StreamWriter sw = File.AppendText(errorFilepath+errorFilename);
                    foreach (Funds f in Invalid)
                    {
                        sw.WriteLine(f.FundsID+","+f.SubfundID+","+f.Asset+","+f.La+","+f.o);
                    }
                    sw.Flush();
                    sw.Close();

                }
            }
            public void SaveValidListToDB(List<Funds> Validlstfunds, SqlConnection connection)
            {
                try
                {
                    foreach (Funds f in Validlstfunds)
                    {
                        connection.Open();
                        SqlCommand cmd = new SqlCommand(("Insert into SBA.Fund_Details (FundId,SubFundId,Assets,Liabilities,OutstandingShares) Values ( '" + f.FundsID + "','" + f.SubfundID + "','" + f.Asset + "','" + f.La + "','" + f.o + "')"), connection);
                        int i = cmd.ExecuteNonQuery();
                        cmd.Parameters.Clear();
                        connection.Close();
                    }
                }
                catch (Exception ex)
                {
                    throw new FundsValidatorException(ex.Message);
                }

            }
            public List<Funds> GerPerFundDetails(List<Funds> Validlists)
            {
                List<string> s = new List<string>();
                List<Funds> RemoveDup = new List<Funds>();
                String[] r = (from a in Validlists
                         select a.FundsID).Distinct().ToArray();
                foreach (String x in r)
                {
                    int assetnum = 0;
                    int lanum = 0;
                    int onum=0;
                    foreach (Funds q in Validlists)
                    {
                        if (x.ToString() == q.FundsID)
                        {
                            assetnum = assetnum + int.Parse(q.Asset);
                            lanum=lanum+int.Parse(q.La);
                            onum=onum+int.Parse(q.o);
                        }
                    }
                    Funds f= new Funds();
                    f.FundsID=x.ToString();
                    f.Asset=assetnum.ToString();
                    f.La=lanum.ToString();
                    f.o= onum.ToString();
                    RemoveDup.Add(f);

                }
                return RemoveDup;
            }
            public void CalculateNavandSaveToDatabase(List<Funds> Removeddup,SqlConnection connection)
            {
                List<Funds> NAVClaculated = new List<Funds>();
                foreach(Funds item in Removeddup)
                {
                     item.NAV= (float)(Math.Round(((float.Parse(item.Asset) - float.Parse(item.La))/(float.Parse(item.o))),2));

                    NAVClaculated.Add(item);
                }
                foreach (Funds f in NAVClaculated)
                {
                    connection.Open();
                    SqlCommand cmd = new SqlCommand(("Insert into SBA.Nav_Report (FundId,Assets,Liabilities,OutstandingShares,Nav) Values ( '" + f.FundsID + "','" + f.Asset + "','" + f.La + "','" + f.o +"','"+f.NAV+ "')"), connection);
                    int i = cmd.ExecuteNonQuery();
                    cmd.Parameters.Clear();
                    connection.Close();
                }
            }
        }
    }
    namespace Tarriffs
{
    public class Tariff
    {
        public string UserId { get; set; }
        public string UserName { get; set; }
        public string Category { get; set; }
        public string LastMeterReading { get; set; }
        public string CurrentMeterReading { get; set; }
        public string ReadingDate { get; set; }
        public string NoofUnits { get; set; }
        public string CalculatedAmount { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            string inputfile = @"D:\Tarriffs\Input file\Tarriff_0919.txt";
            List<Tariff> read = new List<Tariff>();
            StreamReader sr = File.OpenText(inputfile);
            string s= null;
            while((s= sr.ReadLine())!=null)
            {
                string[] item = s.Split(',');
                Tariff tar = new Tariff();
                tar.UserId= item[0];
                tar.UserName= item[1];
                tar.Category= item[2];
                tar.LastMeterReading= item[3];
                tar.CurrentMeterReading= item[4];
                tar.ReadingDate= item[5];
                bool valid = validandlogger(tar.UserId, tar.UserName, tar.Category, tar.LastMeterReading, tar.CurrentMeterReading, tar.ReadingDate);
                if (valid)
                {
                    double[] tarriffcalculation = tarriffcalc(tar.LastMeterReading, tar.CurrentMeterReading);
                    Tariff final = new Tariff();
                    final.UserId = item[0];
                    final.UserName = item[1];
                    final.NoofUnits = tarriffcalculation[0].ToString();
                    final.CalculatedAmount = tarriffcalculation[1].ToString();
                    SqlConnection conn= new SqlConnection(@"Data Source=NA03OSDVP00746\SQLEXPRESS;Initial Catalog=DBTarriffValidation;Integrated Security=True");
                    conn.Open();
                    SqlCommand cmd = new SqlCommand("Insert into dbo.custom values ('" + final.UserId + "','" + final.UserName + "','" + final.NoofUnits + "','" + final.CalculatedAmount + "')", conn);

                    int i = cmd.ExecuteNonQuery();
                    conn.Close();
                }
            }
        }
        public static bool validandlogger(string UserId, string UserName, string Category, string LastMeterReading, string CurrentMeterReading, string ReadingDate)
        {
            bool valid = true;
            DateTime dt;
            Regex name = new Regex("^[a-zA-Z0-9]{6}$");
            valid = valid && (!string.IsNullOrEmpty(UserId)) && UserId.All(char.IsDigit);
            valid = valid && (!string.IsNullOrEmpty(UserName)) && name.IsMatch(UserName);
            string[] vcategory = { "COM", "DOM", "OTD" };
            valid = valid && vcategory.Contains(Category);
            valid = valid && LastMeterReading.All(char.IsDigit);
            valid = valid && CurrentMeterReading.All(char.IsDigit);
            valid = valid && DateTime.TryParseExact(ReadingDate, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);
            if (!valid)
            {

                string errortextfile = @"D:\Tarriffs\Error_log\";
                string errorfile = "Error_"+DateTime.Now.ToString("MMyyyy")+".txt";
                if (!File.Exists(errortextfile + errorfile))
                {
                    var i = File.Create(errortextfile + errorfile);
                    i.Close();
                }
                StreamWriter sw = File.AppendText(errortextfile + errorfile);
                sw.WriteLine(UserId + "," + UserName + "," + Category + "," + LastMeterReading + "," + CurrentMeterReading + "," + ReadingDate);
                sw.Flush();
                sw.Close();
            }
            else
            {
                return true;
            }
            return false;

        }
        public static double[] tarriffcalc(string LastMeterReading, string CurrentMeterReading)
        {
            int LMeterReading = 0;
            int CMeterReading = 0;
            LMeterReading = int.Parse(LastMeterReading);
            CMeterReading = int.Parse(CurrentMeterReading);
            int units = CMeterReading - LMeterReading;
            double totalamount = 0;
            if (units <= 100)
            {
                var baserate = 20;
                totalamount = (units * 1) + baserate;
            }
            else if (units <= 200)
            {
                var baserate = 20;
                totalamount = (units * 1.5) + baserate;
            }
            else if (units <= 500)
            {
                var baserate = 40;
                totalamount = 250 +((units-200)*3)+baserate;
            }
            else if (units > 500)
            {
                var baserate = 40;
                totalamount = 1700 + ((units - 500) * 5.75) + baserate;
            }
            return new double[] {units,totalamount};
        }
    }
}

Другие вопросы по теме