public bool Run(PostingEngineEnvironment env) { env.CallBack?.Invoke($"{Module} Started"); env.CallBack?.Invoke("Getting Daily Pnl Data"); var performanceRecords = DailyPnL.GetList(env.ConnectionString); env.CallBack?.Invoke($"{Module} Running the calculation"); var dailyPerformanceResult = new DailyPnlCalculator().CalculateDailyPerformance(performanceRecords); var dailyPerformance = dailyPerformanceResult.GetType().GetProperty("payload") ?.GetValue(dailyPerformanceResult, null); bool insertDailyPnl = UpdateDailyPnl((List <DailyPnL>)dailyPerformance, env.ConnectionString); env.CallBack?.Invoke($"{Module} Finished"); return(true); }
public async Task <object> UploadDailyUnofficialPnl(HttpRequestMessage requestMessage) { try { var uploadedResult = await Utils.SaveFileToServerAsync(requestMessage, "PerformanceData"); if (!uploadedResult.Item1) { return(Utils.Wrap(false)); } var dailyPnlPath = uploadedResult.Item2; var dailyPnlFileName = uploadedResult.Item3; var recordBody = _fileProcessor.ImportFile(dailyPnlPath, "DailyPnl", "PerformanceFormats", ','); var records = JsonConvert.SerializeObject(recordBody.Item1); var performanceRecords = JsonConvert.DeserializeObject <List <DailyPnL> >(records); var failedRecords = new Dictionary <object, Row>(); var key = 0; foreach (var item in recordBody.Item2) { failedRecords.Add(key++, item); } var failedPerformanceList = _fileManagementService.MapFailedRecords(failedRecords, DateTime.Now, uploadedResult.Item3); List <FileInputDto> fileList = new List <FileInputDto> { new FileInputDto(dailyPnlPath, dailyPnlFileName, performanceRecords.Count, "DailyUnofficialPnl", "Upload", failedPerformanceList, DateTime.Now) }; _fileManagementService.InsertActivityAndPositionFilesForSilver(fileList); var previousData = GetLatestDailyPnlPerPortfolio(); var previousList = previousData.Item2; if (previousData.Item1) { performanceRecords = performanceRecords.Concat(previousList).ToList(); } var dailyPerformanceResult = new DailyPnlCalculator().CalculateDailyPerformance(performanceRecords); var dailyPerformance = dailyPerformanceResult.GetType().GetProperty("payload") ?.GetValue(dailyPerformanceResult, null); bool insertDailyPnl = InsertDailyPnl((List <DailyPnL>)dailyPerformance); if (insertDailyPnl) { return(Utils.Wrap(true, dailyPerformance, null)); } else { return(Utils.Wrap(false)); } } catch (Exception ex) { return(Utils.Wrap(false)); } }