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