2017-12-28 29 views
-1
public List<StockMarket> ReadAllRecords(string TxtFilePath, string TxtFileName) 
{ 
    List<StockMarket> Stock = new List<StockMarket>(); 
    String[] a = File.ReadAllLines(TxtFilePath + TxtFileName); 

    foreach (var b in a) 
    { 
     String[] d = b.Split(','); 
     StockMarket S = new StockMarket(); 
     S.ProductId = d[0]; 
     S.ProductName = d[1]; 
     S.StockId = d[2]; 
     S.StockName = d[3]; 
     S.StockPrice = d[4]; 
     S.NumberofStocks = d[5]; 
     S.Currency = d[6]; 
     Stock.Add(S); 
    } 

    return Stock; 
} 

public List<StockMarket> GetValidRecords(List<StockMarket> Stock, string ErrorFilePath, string ErrorFileName) 
{ 
    List<StockMarket> Valid = new List<StockMarket>(); 
    List<StockMarket> InValid = new List<StockMarket>(); 

    foreach (var s in Stock) 
    { 
     bool ValidRecord = true; 

     if (String.IsNullOrEmpty(s.ProductId) || !s.ProductId.All(Char.IsDigit)) 
     { 
      ValidRecord = false; 
     } 

     if (!s.ProductName.StartsWith("ABC") || s.ProductName.Length != 6) 
     { 
      ValidRecord = false; 
     } 

     if (String.IsNullOrEmpty(s.StockId) || !s.StockId.All(Char.IsDigit)) 
     { 
      ValidRecord = false; 
     } 

     if (!s.StockName.StartsWith("SBC") || s.StockName.Length != 7) 
     { 
      ValidRecord = false; 
     } 

     if (string.IsNullOrEmpty(s.StockPrice)) 
     { 
      ValidRecord = false; 
     } 

     if (string.IsNullOrEmpty(s.NumberofStocks) || !s.NumberofStocks.All(char.IsDigit)) 
     { 
      ValidRecord = false; 
     } 

     if (!(s.Currency.Equals("INR") || s.Currency.Equals("USD") || s.Currency.Equals("EUR"))) 
     { 
      ValidRecord = false; 
     } 

     if (ValidRecord) 
     { 
      Valid.Add(s); 
     } 
     else 
     { 
      InValid.Add(s); 
     } 
    } 

    LogErrorRecord(InValid, ErrorFilePath, ErrorFileName); 
    return Valid; 
} 

public List<StockMarket> CalculateTotalPrice(List<StockMarket> Stock) 
{ 
    foreach (var s in Stock) 
    { 
     if (s.Currency.Equals("INR")) 
     { 
      s.TotalPrice = (Convert.ToDouble(s.StockPrice) * Convert.ToDouble(s.NumberofStocks) * 1).ToString(); 
     } 
     else if (s.Currency.Equals("USD")) 
     { 
      s.TotalPrice = (Convert.ToDouble(s.StockPrice) * Convert.ToDouble(s.NumberofStocks) * 0.5).ToString(); 
     } 
     else if (s.Currency.Equals("EUR")) 
     { 
      s.TotalPrice = (Convert.ToDouble(s.StockPrice) * Convert.ToDouble(s.NumberofStocks) * 0.75).ToString(); 
     } 
    } 

    return Stock; 
} 

public void LogErrorRecord(List<StockMarket> InvalidStock, string ErrorFilePath, string ErrorFileName) 
{ 
    List<String> InvalidItems = new List<string>(); 

    foreach (var I in InvalidStock) 
    { 
     InvalidItems.Add(I.ProductId + " " + I.ProductName + " " + I.StockId + " " + I.StockName + " " + I.StockPrice + " " + I.NumberofStocks + " " + I.Currency); 
    } 

    File.AppendAllLines(ErrorFilePath + ErrorFileName, InvalidItems); 
} 

public void SavetoDB(List<StockMarket> Stock, SqlConnection connection) 
{ 
    String Query = "insert into StockMarket(ProductId,Productname,StockId,StockName,StockPrice,NumberofStocks,Currency,TotalPrice) Values(@ProductId,@ProductName,@StockId,@StockName,@StockPrice,@NumberofStocks,@Currency,@TotalPrice)"; 
    connection.Open(); 

    foreach (var a in Stock) 
    { 
     SqlCommand cmd = new SqlCommand(Query, connection); 
     cmd.Parameters.Add("@ProductId", a.ProductId); 
     cmd.Parameters.Add("@ProductName", a.ProductName); 
     cmd.Parameters.Add("@StockId", a.StockId); 
     cmd.Parameters.Add("@StockName", a.StockName); 
     cmd.Parameters.Add("@StockPrice", a.StockPrice); 
     cmd.Parameters.Add("@NumberofStocks", a.NumberofStocks); 
     cmd.Parameters.Add("@Currency", a.Currency); 
     cmd.Parameters.Add("@TotalPrice", a.TotalPrice); 
     int b = cmd.ExecuteNonQuery(); 
    } 

    connection.Close(); 
} 

public void SaveDistinctProductName(List<StockMarket> Stock, SqlConnection connection) 
{ 
    String Query = "if not exists(select * from Product where ProductId = @ProductId) begin insert into Product (ProductId,ProductName) Values(@ProductId,@ProductName)end"; 
    connection.Open(); 

    foreach (var a in Stock) 
    { 
     SqlCommand cmd = new SqlCommand(Query, connection); 
     cmd.Parameters.Add("@ProductId", a.ProductId); 
     cmd.Parameters.Add("@ProductName", a.ProductName); 
     int b = cmd.ExecuteNonQuery(); 
    } 

    connection.Close(); 
} 

public void SaveDistinctStockName(List<StockMarket> Stock, SqlConnection connection) 
{ 
    String Query = "if not exists(select * from Stock where StockId = @StockId) begin insert into Stock (StockId,StockName) Values(@StockId,@StockName)end"; 
    connection.Open(); 

    foreach (var a in Stock) 
    { 
     SqlCommand cmd = new SqlCommand(Query, connection); 
     cmd.Parameters.Add("@StockId", a.StockId); 
     cmd.Parameters.Add("@StockName", a.StockName); 
     int b = cmd.ExecuteNonQuery(); 
    } 

    connection.Close(); 
} 

Entity Framework를 사용하면 코드를 작성하거나 EF 디자이너에서 상자와 줄을 사용하여 모델을 만들 수 있습니다. 이 두 가지 접근 방법을 모두 사용하여 기존 데이터베이스를 대상으로 지정하거나 새 데이터베이스를 만들 수 있습니다. 이 짧은 비디오는 차이점과 당신에게 맞는 것을 찾는 방법을 설명합니다.엔티티 프레임 워크

나 코드

+1

[나는 ** 좋은 ** 질문을 어떻게해야합니까?]의 개요 (http://stackoverflow.com/help/how을 알려주세요 -묻다) –

답변

-1
public void calculateFX(SqlConnection connection, string inputfilepath, string inputfilename, string errorfilepath, string errorfilename, string targetfilepath, string targetfilename) 
{ 
    List<Trade> rawTrade = new List<Trade>(); 
    List<Trade> validTrade = new List<Trade>(); 
    rawTrade = ReadfromInputFile(inputfilepath, inputfilename); 
    validTrade = GetValidTrade(rawTrade, errorfilepath, errorfilename); 
    // WriteValidtoDB(connection, validTrade); 

    List<FXRate> FxR = new List<FXRate>(); 
    FxR = CalculateFxRate(connection); 
    // WriteFxtoDB(connection, FxR); 
    CopyRawInput(inputfilepath, inputfilename, targetfilepath, targetfilename); 

} 
private List<Trade> ReadfromInputFile(string inputfilepath, string inputfilename) 
{ 
    List<Trade> RawTrade = new List<Trade>(); 
    string inputfile = string.Concat(inputfilepath, inputfilename); 

    string[] lines; 
    string[] row; 


    lines = System.IO.File.ReadAllLines(inputfile); 
    foreach (var line in lines) 
    { 
     row = line.Split(','); 
     Trade t = new Trade(); 
     t.TradeID = row[0]; 
     t.ISIN = row[1]; 
     t.TradeDate = row[2]; 
     t.MaturityDate = row[3]; 
     t.TradeType = row[4]; 
     t.Currency = row[5]; 
     t.Amount = row[6]; 
     RawTrade.Add(t); 
    } 
    return RawTrade; 
} 
private List<Trade> GetValidTrade(List<Trade> rawTrade, string errorfilepath, string errorfilename) 
{ 
    List<Trade> ValidTrade = new List<Trade>(); 
    List<Trade> InvalidTrade = new List<Trade>(); 
    foreach (var row in rawTrade) 
    { 
     if (row.TradeID != null) 
     { 
      Regex RegTId = new Regex(@"^[TR]{2}[0-9]{1,}$"); 
      if (!RegTId.IsMatch(row.TradeID)) 
      { 
       InvalidTrade.Add(row); 
       continue; 
      } 
     } 
     if (row.ISIN != null) 
     { 
      Regex RegTId = new Regex(@"^[ISIN]{4}[0-9]{1,}$"); 
      if (!RegTId.IsMatch(row.ISIN)) 
      { 
       InvalidTrade.Add(row); 
       continue; 
      } 
     } 
     if (row.TradeDate != null) 
     { 
      bool isValidTDate; 
      DateTime dt; 
      isValidTDate = DateTime.TryParseExact(row.TradeDate.ToString(), "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt); 
      if (!isValidTDate) 
      { 
       InvalidTrade.Add(row); 
       continue; 
      } 
     } 
     if (row.MaturityDate != null) 
     { 
      bool isValidMDate; 
      DateTime dt; 
      isValidMDate = DateTime.TryParseExact(row.MaturityDate.ToString(), "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt); 
      if (isValidMDate) 
      { 
       int Tyear = DateTime.Parse(row.TradeDate).Year; 
       int Myear = DateTime.Parse(row.MaturityDate).Year; 
       if ((Myear - Tyear) < 5) 
       { 
        InvalidTrade.Add(row); 
        continue; 
       } 
      } 
     } 
     if (row.Currency != null) 
     { 
      Regex RegCur = new Regex(@"^[a-zA-Z]{3}$"); 
      if (!RegCur.IsMatch(row.Currency)) 
      { 
       InvalidTrade.Add(row); 
       continue; 
      } 
     } 
     if (row.Amount != null) 
     { 
      Regex RegAmt = new Regex(@"^[0-9]{1,}$"); 
      if (!RegAmt.IsMatch(row.Amount)) 
      { 
       InvalidTrade.Add(row); 
       continue; 
      } 
     } 
     ValidTrade.Add(row); 

    } 
    WriteInvalidTrade(InvalidTrade, errorfilepath, errorfilename); 
    return ValidTrade; 
} 
private bool WriteInvalidTrade(List<Trade> InValidTrade, string errorfilepath, string errorfilename) 
{ 
    string errorfile = string.Concat(errorfilepath, errorfilename); 
    using (TextWriter writer = new StreamWriter(errorfile)) 
    { 
     foreach (var row in InValidTrade) 
     { 
      writer.WriteLine("{0},{1},{2},{3},{4},{5},{6}", row.TradeID.ToString(), row.ISIN.ToString(), row.TradeDate.ToString(), row.MaturityDate.ToString(), row.TradeType.ToString(), row.Currency.ToString(), row.Amount.ToString()); 
     } 
     writer.Close(); 
    } 
    if (System.IO.File.Exists(errorfile)) 
    { 
     return true; 
    } 
    else 
     return false; 
} 
private void WriteValidtoDB(SqlConnection connection, List<Trade> ValidTrade) 
{ 
    using (connection) 
    { 
     connection.Open(); 
     string insQuery = "insert into Trade (TradeID,ISIN,TradeDate,MaturityDate,TradeType,Currency,Amount) values (@TradeID,@ISIN,@TradeDate,@MaturityDate,@TradeType,@Currency,@Amount) "; 
     SqlCommand cmd = new SqlCommand(insQuery, connection); 
     cmd.CommandType = CommandType.Text; 
     foreach (var item in ValidTrade) 
     { 
      cmd.Parameters.Clear(); 
      cmd.Parameters.AddWithValue("@TradeID", item.TradeID); 
      cmd.Parameters.AddWithValue("@ISIN", item.ISIN); 
      cmd.Parameters.AddWithValue("@TradeDate", item.TradeDate); 
      cmd.Parameters.AddWithValue("@MaturityDate", item.MaturityDate); 
      cmd.Parameters.AddWithValue("@TradeType", item.TradeType); 
      cmd.Parameters.AddWithValue("@Currency", item.Currency); 
      cmd.Parameters.AddWithValue("@Amount", item.Amount); 
      cmd.ExecuteNonQuery(); 
     } 
     connection.Close(); 
    } 
} 
private List<FXRate> CalculateFxRate(SqlConnection connection) 
{ 
    List<FXRate> FxRate = new List<FXRate>(); 
    using (connection) 
    { 
     connection.Open(); 
     string getTrade = "select * from Trade"; 
     SqlCommand cd = new SqlCommand(getTrade, connection); 
     cd.CommandType = CommandType.Text; 
     SqlDataReader read = null; 
     read = cd.ExecuteReader(); 
     while (read.Read()) 
     { 
      FXRate fx = new FXRate(); 
      string TradeId = read["TradeID"].ToString().Trim(); 
      string TradeType = read["TradeType"].ToString().Trim(); 
      string Currency = read["Currency"].ToString(); 
      string Amount = read["Amount"].ToString(); 
      if (TradeType.Equals("fx")) 
      { 
        switch(Currency) 
        { 
         case "GBP": 
          fx.FxAmount = (0.5 * float.Parse(Amount)).ToString(); 
          fx.Amount = Amount; 
          fx.Currency = Currency; 
          fx.TradeID = TradeId; 
          fx.TradeType = TradeType; 
          FxRate.Add(fx); 
          break; 

         case "INR": 
          fx.FxAmount = (1 * float.Parse(Amount)).ToString(); 
          fx.Amount = Amount; 
          fx.Currency = Currency; 
          fx.TradeID = TradeId; 
          fx.TradeType = TradeType; 
          FxRate.Add(fx);   
          break; 

         case "EUR": 
          fx.FxAmount = (0.75 * float.Parse(Amount)).ToString(); 
          fx.Amount = Amount; 
          fx.Currency = Currency; 
          fx.TradeID = TradeId; 
          fx.TradeType = TradeType; 
          FxRate.Add(fx);          
          break; 

         case "USD": 
          fx.FxAmount = (0.25 * float.Parse(Amount)).ToString(); 
          fx.Amount = Amount; 
          fx.Currency = Currency; 
          fx.TradeID = TradeId; 
          fx.TradeType = TradeType; 
          FxRate.Add(fx); 
          break; 
        } 
      } 
     } 
     connection.Close(); 
    } 
    return FxRate; 
} 
private void WriteFxtoDB(SqlConnection connection, List<FXRate> FxR) 
{ 
    connection = new SqlConnection("Data Source=10.246.229.1;Initial catalog=Test_DB ; USER ID=PatientPortalAdmin; password=PatientPortalAdmin"); //Pls see comments below   
    using (connection) 
    { 
     connection.Open(); 
     string insQuery = "insert into fXAmount (TradeID,TradeType,Currency,Amount,fxAmount) values (@TradeID,@TradeType,@Currency,@Amount,@fxAmount) "; 
     SqlCommand cmd = new SqlCommand(insQuery, connection); 
     cmd.CommandType = CommandType.Text; 
     foreach (var item in FxR) 
     { 
      cmd.Parameters.Clear(); 
      cmd.Parameters.AddWithValue("@TradeID", item.TradeID);      
      cmd.Parameters.AddWithValue("@TradeType", item.TradeType); 
      cmd.Parameters.AddWithValue("@Currency", item.Currency); 
      cmd.Parameters.AddWithValue("@Amount", item.Amount); 
      cmd.Parameters.AddWithValue("@fxAmount", item.FxAmount); 
      cmd.ExecuteNonQuery(); 
     } 
     connection.Close(); 
    } 
} 
private bool CopyRawInput(string inputfilepath, string inputfilename, string targetfilepath, string targetfilename) 
{ 
    string inputfile = string.Concat(inputfilepath, inputfilename); 
    string targetfile = string.Concat(targetfilepath, targetfilename); 
    if (!System.IO.File.Exists(targetfile)) 
    { 
     System.IO.File.Copy(inputfile, targetfile, true); 
    } 
    else 
    { 
     System.IO.File.Delete(targetfile); 
     System.IO.File.Copy(inputfile, targetfile, true); 
    } 
    if (System.IO.File.Exists(targetfile)) 
    { 
     return true; 
    } 
    else 
     return false; 
} 

}