Commit b8188300 authored by solho's avatar solho

fixed

parent 95e2a99c
......@@ -13,7 +13,6 @@ using System.Web;
using System.Web.Http;
using WebAPI.Models;
using static WebAPI.Models.CommonModel;
using static WebAPI.Models.CurHisModel;
namespace WebAPI.Controllers
{
......@@ -142,6 +141,8 @@ namespace WebAPI.Controllers
IXLWorksheet worksheet = wb.Worksheet(1);
int curRow = 3, curcell = 1, Rownum = 1;
worksheet.Range(curRow - 1, 8, curRow - 1, 8).InsertColumnsAfter(msg.CurHislist_Excel[0].Submit_audit_time.Count * 2);//插入第N次 遞交 退件欄位
foreach (核稿歷史Excel chis in msg.CurHislist_Excel)
{
ClosedXML.Excel.IXLCells cells = worksheet.Row(curRow).Cells();
......@@ -161,17 +162,14 @@ namespace WebAPI.Controllers
worksheet.Cell(curRow, curcell).Value = chis.revise_curEmpName;
curcell++;
worksheet.Cell(curRow, curcell).Value = chis.Reject_Count;
worksheet.Range(curRow - 1, curcell, curRow - 1, curcell).InsertColumnsAfter(chis.Submit_audit_time.Count * 2);//插入第N次 遞交 退件欄位
for (int i = 0; i < chis.Submit_audit_time.Count; i++)
{
curcell++;
worksheet.Cell(curRow - 1, curcell).Value = "第" + (i + 1) + "次遞交日";
worksheet.Cell(2, curcell).Value = "第" + EastAsia_Format((i + 1).ToString()) + "次遞交日";
worksheet.Cell(curRow, curcell).Value = chis.Submit_audit_time[i];
curcell++;
worksheet.Cell(curRow - 1, curcell).Value = "第" + (i + 1) + "次退件日";
worksheet.Cell(curRow, curcell).Value = chis.Reject_audit_time[i];
worksheet.Cell(2, curcell).Value = "第" + EastAsia_Format((i + 1).ToString()) + "次退件日";
worksheet.Cell(curRow, curcell).Value = chis.Reject_audit_time[i];
}
curcell++;
worksheet.Cell(curRow, curcell).Value = chis.int_doc_date;
......@@ -180,11 +178,11 @@ namespace WebAPI.Controllers
curRow++;
}
//worksheet.Columns().AdjustToContents();
worksheet.Columns().AdjustToContents();
//worksheet.Rows().AdjustToContents();
wb.SaveAs(ms);
response.Clear();
response.AddHeader("Content-Disposition", "attachment; filename=" + "RecordExport_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");
response.AddHeader("Content-Disposition", "attachment; filename=" + "Cur_lis_Report_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");
ms.WriteTo(response.OutputStream);
ms.Close();
......@@ -245,7 +243,7 @@ namespace WebAPI.Controllers
) ", string.Join(",", parameters)),
MaxCount = @"select max(count) as maxCount from
(
select count(case when IsReject=1 then 1 else null end) as count,max(audit_time) as Max_audit_time
select count(case when IsReject=2 then 1 else null end) as count,max(audit_time) as Max_audit_time
,MIN(audit_time) as Min_audit_time,eflow_id
from cte
group by eflow_id
......@@ -272,7 +270,7 @@ namespace WebAPI.Controllers
{
auditCount = Convert.ToInt16(dr["maxCount"]);
}
auditCount = 7;//test 動態完成待處理
//auditCount = 7;//test 動態完成待處理
for (int i = 1; i <= auditCount; i++)
{
......@@ -437,7 +435,7 @@ namespace WebAPI.Controllers
[HttpOptions]
//[EnableCors(origins: "*", headers: "*", methods: "*")]
//public MessageList Get_cur_hiss([FromBody] CurHisParam chp)
public MessageList Get_cur_hiss_test([FromBody] List<CurHisParam> chp)
public MessageList Get_cur_hiss_test([FromBody] List<Cur_HisParam> chp)
{
String connString = ConfigurationManager.ConnectionStrings["eflow_cur"].ConnectionString;
HttpRequest Req = HttpContext.Current.Request;
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Results;
namespace WebAPI.Controllers
{
[RoutePrefix("DBJsonData")]
public class DBJsonDataController : ApiController
{
public DBJsonDataController(Boolean ischeck)
{
}
[System.Web.Mvc.Route("GetJsonFromDB")]
[HttpPost]
public void GetJsonFromDB(Boolean ischeck)
{
}
}
}
\ No newline at end of file
using ClosedXML.Excel;
using ExcelDataReader;
using Microsoft.International.Formatters;
using ExcelDataReader;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Http;
using System.Web.Http.Cors;
using WebAPI.Models;
using static WebAPI.Models.CommonModel;
......@@ -25,6 +16,7 @@ namespace WebAPI.Controllers
{
public class FeeOfferConfigController : ApiController
{
String Country = "zh_cn";
//Message Outmsg;
MessageList Outmsg;
public FeeOfferConfigController()
......@@ -36,8 +28,6 @@ namespace WebAPI.Controllers
#region 報價規則
[Route("GetFeeOfferConfigList")]
[EnableCors(origins: "http://120.78.73.107:8888,https://ipeasy.purplevineip.com,https://ipeasy.essenptl.com",
headers: "*", methods: "*", SupportsCredentials = true)]
[HttpPost]
public MessageList GetFeeOfferConfigList(Boolean ischeck)
......@@ -133,10 +123,10 @@ namespace WebAPI.Controllers
{
DataRow drTemp;
String FieldName = "", FieldValue = "", AddFieldName = "";
#region MetaData Set
#region MetaData Set
FieldName = "案件類型"; AddFieldName = "case_type_id"; FieldValue = drRow[FieldName].ToString();
drTemp = MetaData.Tables[0].AsEnumerable().Where(p => p.Field<String>("case_type_zh_tw") == ToTraditional(FieldValue)).FirstOrDefault();
drTemp = MetaData.Tables[0].AsEnumerable().Where(p => p.Field<String>("case_type_" + Country) == ToSimplified(FieldValue)).FirstOrDefault();
if (drTemp != null) ids.Add(AddFieldName, drTemp[AddFieldName].ToString());
else
{
......@@ -145,7 +135,7 @@ namespace WebAPI.Controllers
}
FieldName = "申請類型"; AddFieldName = "apply_type_id"; FieldValue = drRow[FieldName].ToString();
drTemp = MetaData.Tables[1].AsEnumerable().Where(p => p.Field<String>("apply_type_zh_tw") == ToTraditional(FieldValue)).FirstOrDefault();
drTemp = MetaData.Tables[1].AsEnumerable().Where(p => p.Field<String>("apply_type_" + Country) == ToSimplified(FieldValue)).FirstOrDefault();
if (drTemp != null) ids.Add(AddFieldName, drTemp[AddFieldName].ToString());
else
{
......@@ -155,7 +145,7 @@ namespace WebAPI.Controllers
FieldName = "處理事項"; AddFieldName = "ctrl_proc_id"; FieldValue = drRow[FieldName].ToString();
String case_type_id = ids["case_type_id"];
drTemp = MetaData.Tables[2].AsEnumerable().Where(p => p.Field<String>("ctrl_proc_zh_tw") == ToTraditional(FieldValue) && p.Field<String>("case_type_id") == case_type_id).FirstOrDefault();
drTemp = MetaData.Tables[2].AsEnumerable().Where(p => p.Field<String>("ctrl_proc_" + Country) == ToSimplified(FieldValue) && p.Field<String>("case_type_id") == case_type_id).FirstOrDefault();
if (drTemp != null) ids.Add(AddFieldName, drTemp[AddFieldName].ToString());
else
{
......@@ -163,7 +153,7 @@ namespace WebAPI.Controllers
if (!String.IsNullOrWhiteSpace(FieldValue)) Noticemsg += "(無" + FieldName + ":" + FieldValue + "),";
}
FieldName = "業務類型"; AddFieldName = "business_type_id"; FieldValue = drRow[FieldName].ToString();
drTemp = MetaData.Tables[3].AsEnumerable().Where(p => p.Field<String>("business_type_zh_tw") == ToTraditional(FieldValue)).FirstOrDefault();
drTemp = MetaData.Tables[3].AsEnumerable().Where(p => p.Field<String>("business_type_" + Country) == ToSimplified(FieldValue)).FirstOrDefault();
if (drTemp != null) ids.Add(AddFieldName, drTemp[AddFieldName].ToString());
else
{
......@@ -171,7 +161,7 @@ namespace WebAPI.Controllers
if (!(String.IsNullOrWhiteSpace(FieldValue))) Noticemsg += "(無" + FieldName + ":" + FieldValue + "),";
}
FieldName = "程序名稱"; AddFieldName = "fc_cate_id"; FieldValue = drRow[FieldName].ToString();
drTemp = MetaData.Tables[4].AsEnumerable().Where(p => p.Field<String>("text_zh_tw") == ToTraditional(FieldValue)).FirstOrDefault();
drTemp = MetaData.Tables[4].AsEnumerable().Where(p => p.Field<String>("text_" + Country) == ToSimplified(FieldValue)).FirstOrDefault();
if (drTemp != null) ids.Add(AddFieldName, drTemp[AddFieldName].ToString());
else
{
......@@ -187,7 +177,7 @@ namespace WebAPI.Controllers
errmsg += "(無" + FieldName + ":" + FieldValue + "),";
}
FieldName = "案件階段"; AddFieldName = "case_status_id"; FieldValue = drRow[FieldName].ToString();
drTemp = MetaData.Tables[6].AsEnumerable().Where(p => p.Field<String>("case_status_zh_tw") == ToTraditional(FieldValue)).FirstOrDefault();
drTemp = MetaData.Tables[6].AsEnumerable().Where(p => p.Field<String>("case_status_" + Country) == ToSimplified(FieldValue)).FirstOrDefault();
if (drTemp != null) ids.Add(AddFieldName, drTemp[AddFieldName].ToString());
else
{
......@@ -195,7 +185,7 @@ namespace WebAPI.Controllers
if (!String.IsNullOrWhiteSpace(FieldValue)) Noticemsg += "(無" + FieldName + ":" + FieldValue + "),";
}
FieldName = "科目"; AddFieldName = "fee_cate_workitem"; FieldValue = drRow[FieldName].ToString();
drTemp = MetaData.Tables[7].AsEnumerable().Where(p => p.Field<String>("text_zh_tw") == ToTraditional(FieldValue)).FirstOrDefault();
drTemp = MetaData.Tables[7].AsEnumerable().Where(p => p.Field<String>("text_" + Country) == ToSimplified(FieldValue)).FirstOrDefault();
if (drTemp != null) ids.Add(AddFieldName, drTemp["value"].ToString());
else
{
......@@ -204,7 +194,7 @@ namespace WebAPI.Controllers
}
FieldName = "稅別"; AddFieldName = "fo_tax_rate_name"; FieldValue = drRow[FieldName].ToString();
drTemp = MetaData.Tables[8].AsEnumerable().Where(p => p.Field<String>("text_zh_tw") == ToTraditional(FieldValue)).FirstOrDefault();
drTemp = MetaData.Tables[8].AsEnumerable().Where(p => p.Field<String>("text_"+ Country) == ToSimplified(FieldValue)).FirstOrDefault();
if (drTemp != null) ids.Add(AddFieldName, drTemp["value"].ToString());
else
{
......@@ -588,12 +578,13 @@ namespace WebAPI.Controllers
private DataSet GetMetaData(ref SqlCommand cmd)
{
string str = @"SELECT case_type_id,case_type_zh_tw FROM dbo.i_case_type; SELECT apply_type_id,apply_type_zh_tw FROM dbo.i_apply_type
SELECT ctrl_proc_id,case_type_id,ctrl_proc_zh_tw FROM dbo.i_ctrl_proc where is_enabled=1;
SELECT business_type_id,business_type_zh_tw FROM dbo.i_business_type where isnull(business_type_zh_tw,'') <> ''; SELECT fc_cate_id,text_zh_tw FROM dbo.i_fc_category where is_enabled=1;
select customer_id,customer_name_en,customer_name from c_customer a where is_enabled=1 and isnull(customer_name,'') <> '';SELECT case_status_id,case_status_zh_tw FROM i_case_status where isnull(case_status_zh_tw,'') <> '';
SELECT dictionary_id,value,text_zh_tw FROM dbo.s_dictionary WHERE dictionary_name = 'fee_cate_workitem'; SELECT dictionary_id,value,text_zh_tw FROM dbo.s_dictionary WHERE dictionary_name ='fo_tax_rate_name';
select currency_id,currency_name_zh_tw from i_currency a;select country_id,country_zh_tw from i_country a";
string str = @"SELECT case_type_id,case_type_@Country FROM dbo.i_case_type; SELECT apply_type_id,apply_type_@Country FROM dbo.i_apply_type
SELECT ctrl_proc_id,case_type_id,ctrl_proc_@Country FROM dbo.i_ctrl_proc where is_enabled=1;
SELECT business_type_id,business_type_@Country FROM dbo.i_business_type where isnull(business_type_@Country,'') <> ''; SELECT fc_cate_id,text_@Country FROM dbo.i_fc_category where is_enabled=1;
select customer_id,customer_name_en,customer_name from c_customer a where is_enabled=1 and isnull(customer_name,'') <> '';SELECT case_status_id,case_status_@Country FROM i_case_status where isnull(case_status_@Country,'') <> '';
SELECT dictionary_id,value,text_@Country FROM dbo.s_dictionary WHERE dictionary_name = 'fee_cate_workitem'; SELECT dictionary_id,value,text_@Country FROM dbo.s_dictionary WHERE dictionary_name ='fo_tax_rate_name';
select currency_id,currency_name_@Country from i_currency a;select country_id,country_@Country from i_country a".Replace("@Country", Country);
cmd.CommandText = str;
DataSet MetaData = GetSqlToDs(cmd);
return MetaData;
......
using Microsoft.International.Formatters;
using Microsoft.International.Formatters;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.Linq;
using System.Globalization;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
using System.Web;
using static WebAPI.Models.CurHisModel;
using DataTable = System.Data.DataTable;
namespace WebAPI.Models
{
public class MessageList
{
public List<Message> msglist; //報價規則
public List<核稿歷史> CurHislist; //核稿評分歷史
public List<核稿歷史Excel> CurHislist_Excel; //核稿評分歷史
public int CurHislist_Count; //核稿評分歷史
public int ListCode //回傳代碼
, ErrCount; //錯誤筆數
public String Listmsg; //回傳訊息
}
public class CommonModel
{
public class Message
{
public String outNoticemsg, outErrmsg, outCustmsg;
public int code, Status;
}
public class MessageList
{
public List<Message> msglist; //報價規則
public List<核稿歷史> CurHislist; //核稿評分歷史
public List<核稿歷史Excel> CurHislist_Excel; //核稿評分歷史
public int CurHislist_Count; //核稿評分歷史
public int ListCode //回傳代碼
, ErrCount; //錯誤筆數
public String Listmsg; //回傳訊息
}
public static DataSet GetSqlToDs(SqlCommand cmd)
{
......@@ -59,7 +50,7 @@ namespace WebAPI.Models
#region 共用函式
public string EastAsia_Format(string Msg)
public static string EastAsia_Format(string Msg)
{
Match m;
while ((m = Regex.Match(Msg, "\\d+")).Success)
......@@ -68,7 +59,6 @@ namespace WebAPI.Models
string t =
EastAsiaNumericFormatter.FormatWithCulture("Ln", n,
null, new CultureInfo("zh-TW"));
//"L"-大寫,壹貳參... "Ln"-一二三... "Lc"-貨幣,同L
Msg = Msg.Substring(0, m.Index) + t +
Msg.Substring(m.Index + m.Value.Length);
}
......@@ -83,6 +73,18 @@ namespace WebAPI.Models
[DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern int LCMapString(int Locale, int dwMapFlags, string lpSrcStr, int cchSrc, [Out] string lpDestStr, int cchDest);
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
internal static extern int LCMapStringEx(
string lpLocaleName, // LPCWSTR lpLocaleName
uint dwMapFlags, // DWORD dwMapFlags
string lpSrcStr, // LPCWSTR lpSrcStr
int cchSrc, // int cchSrc
[Out]
string lpDestStr, // LPWSTR lpDestStr
int cchDest, // int cchDest
IntPtr lpVersionInformation, // LPNLSVERSIONINFO lpVersionInformation
IntPtr lpReserved, // LPVOID lpReserved
IntPtr sortHandle); // LPARAM sortHandle
public static string ToSimplified(string pSource)
{
String tTarget = new String(' ', pSource.Length);
......@@ -92,9 +94,9 @@ namespace WebAPI.Models
public static string ToTraditional(string pSource)
{
String tTarget = new String(' ', pSource.Length);
int tReturn = LCMapString(LOCALE_SYSTEM_DEFAULT, LCMAP_TRADITIONAL_CHINESE, pSource, pSource.Length, tTarget, pSource.Length);
int tReturn = LCMapStringEx("zh-CN", LCMAP_TRADITIONAL_CHINESE, pSource, pSource.Length, tTarget, pSource.Length, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);
return tTarget;
}
}
#endregion
#endregion
}
......
using System;
using System.Collections.Generic;
namespace WebAPI.Models
{
/// <summary>
/// 核稿歷史資料相關
/// </summary>
public class Cur_HisParam
{
public String trids { get; set; }
public String isCount { get; set; }
}
public class 核稿歷史
{
public String eflow_id { get; set; }
public String case_volume { get; set; }
public String case_type_zh_tw { get; set; }
public String proc_status_zh_tw { get; set; }
public String ctrl_proc_zh_tw { get; set; }
public String audit_cn_name { get; set; }
public String audit_time { get; set; }
public String remark { get; set; }
public String audit_type_id { get; set; }
public String audit_type_zh_cn { get; set; }
public String to_cn_name { get; set; }
public String finish_date { get; set; }
public String score { get; set; }
public int Count { get; set; }
public int rejectCount { get; set; }
}
public class 核稿歷史Excel
{
/// <summary>
/// 流程ID
/// </summary>
public String eflow_id { get; set; }
public String create_time { get; set; }
public String Reject_Count { get; set; }
public String case_volume { get; set; }
public String proc_id { get; set; }
public String first_doc_date { get; set; }
public String int_doc_date { get; set; }
/// <summary>
/// 內核時長
/// </summary>
public String Audit_day { get; set; }
/// <summary>
/// 委案日
/// </summary>
public String Charge_date { get; set; }
/// <summary>
/// 承辦人
/// </summary>
public String pic_UserCName { get; set; }
public String revise_curEmpName { get; set; }
public String ctrl_proc_zh_cn { get; set; }
public List<String> Reject_audit_time = new List<String>();
public List<String> Submit_audit_time = new List<String>();
}
}
\ No newline at end of file
using Microsoft.International.Formatters;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
namespace WebAPI.Models
{
public class DBJsonDataModel
{
public class rpt_PerformanceMonth
{
public String attr_EmpItem { get; set; }
public String class_c1 { get; set; }
public String attr_EmpName { get; set; }
public String attr_EmpDS { get; set; }
public String attr_userID { get; set; }
public String 承辦人 { get; set; }
public String 部別 { get; set; }
public String 部門 { get; set; }
public String 所別 { get; set; }
public String class_nn_todo { get; set; }
public String attr_todos2 { get; set; }
public String 處理事項數 { get; set; }
public String 原始點數 { get; set; }
public int 評分後點數 { get; set; }
public int 加乘總點數 { get; set; }
public int 評分後加乘總點數 { get; set; }
public int 總點數 { get; set; }
public DateTime? 結算日期 { get; set; }
public Boolean 確認結算 { get; set; }
public String 薪資類型 { get; set; }
}
}
}
\ No newline at end of file
using Microsoft.International.Formatters;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
using System.Web;
namespace WebAPI.Models
{
/// <summary>
/// 報價規則相關
/// </summary>
public class Message
{
public String outNoticemsg, outErrmsg, outCustmsg;
public int code, Status;
}
public class FeeOfferConfig:CommonModel
{
}
}
\ No newline at end of file
......@@ -14,7 +14,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>WebAPI</RootNamespace>
<AssemblyName>WebAPI</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<UseIISExpress>true</UseIISExpress>
<Use64BitIISExpress />
......@@ -64,6 +64,7 @@
<HintPath>packages\ExcelNumberFormat.1.0.10\lib\net20\ExcelNumberFormat.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
......@@ -189,12 +190,15 @@
<Compile Include="Areas\HelpPage\SampleGeneration\TextSample.cs" />
<Compile Include="Areas\HelpPage\XmlDocumentationProvider.cs" />
<Compile Include="Controllers\Cur_hisController.cs" />
<Compile Include="Controllers\DBJsonDataController.cs" />
<Compile Include="Controllers\HomeController.cs" />
<Compile Include="Controllers\FeeOfferConfigController.cs" />
<Compile Include="Global.asax.cs">
<DependentUpon>Global.asax</DependentUpon>
</Compile>
<Compile Include="Models\CurHisModel.cs" />
<Compile Include="Models\DBJsonDataModel .cs" />
<Compile Include="Models\FeeOfferConfig.cs" />
<Compile Include="Models\Cur_HisModel.cs" />
<Compile Include="Models\CommonModel.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
......@@ -228,8 +232,7 @@
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\CollectionModelDescription.cshtml" />
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\ApiGroup.cshtml" />
<Content Include="Areas\HelpPage\Views\Help\Api.cshtml" />
<None Include="Properties\PublishProfiles\debug.pubxml" />
<None Include="Properties\PublishProfiles\release.pubxml" />
<None Include="Properties\PublishProfiles\FolderProfile.pubxml" />
<None Include="Scripts\jquery-3.4.1.intellisense.js" />
<Content Include="Scripts\jquery-3.4.1.js" />
<Content Include="Scripts\jquery-3.4.1.min.js" />
......@@ -325,8 +328,4 @@
</Target>
<Target Name="AfterBuild">
</Target> -->
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="Web_config_AfterBuild" AfterTargets="AfterBuild" Condition="Exists('Web.$(Configuration).config')">
<TransformXml Source="Web.config" Destination="$(OutputPath)Web.config" Transform="Web.$(Configuration).config" />
</Target>
</Project>
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment