实体框架顺序

时间:2018-09-18 17:49:04

标签: entity

enter image description here

Sourcefile和文件名是源路径。存档文件夹,存档文件名是目标文件夹。输入文件的值应移至目标文件。将文件从源复制到目标时出错。显示“文件已创建”。请让我知道如何在没有硬编码的情况下找到源文件的目录。如何将有效的详细信息以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;
        }
    }
} 

enter image description here

2 个答案:

答案 0 :(得分:0)

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();
                }
            }
        }
    }

答案 1 :(得分:0)

    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};
        }
    }
}