예제 #1
0
        public async Task <ActionResult> UserHistory(ClientLogsViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    if (model.GameHistory)
                    {
                        var entities = await _gameDatabase.GetGameBetsByUser(model.Client, model.StartDate, model.EndDate);

                        if (entities.Count() > 0)
                        {
                            StringBuilder sb = new StringBuilder();
                            sb.AppendLine("Date;UserId;AssetPair;BetAmount;BoxId;BetStatus;Parameters;Box");
                            foreach (var item in entities.OrderBy(m => m.Date))
                            {
                                sb.AppendLine($"{item.Date};{item.UserId};{item.AssetPair};{item.BetAmount};{item.BoxId};{item.BetStatus}-{(BetStates)item.BetStatus};{item.Parameters.Replace(';','|')};{item.Box.Replace(';', '|')}");
                            }
                            return(File(Encoding.UTF8.GetBytes(sb.ToString()), "text/csv", $"userHistory_{model.Client}.csv"));
                        }
                        else
                        {
                            return(StatusCode(500, "Log file is empty"));
                        }
                    }
                    else
                    {
                        var entities = await _gameDatabase.LoadUserHistory(model.Client, model.StartDate, model.EndDate);

                        if (entities.Count() > 0)
                        {
                            StringBuilder sb = new StringBuilder();
                            sb.AppendLine("Date;UserId;Status;AccountDelta;Message;");
                            foreach (var item in entities)
                            {
                                sb.AppendLine($"{item.Date.ToString("u")};{item.UserId};{item.GameStatus}-{(Common.GameStatus)item.GameStatus};{item.AccountDelta};{item.Message.Replace(';', '|')}");
                            }
                            return(File(Encoding.UTF8.GetBytes(sb.ToString()), "text/csv", $"userHistory_{model.Client}.csv"));
                        }
                        else
                        {
                            return(StatusCode(500, "Log file is empty"));
                        }
                    }
                }
                catch (Exception ex)
                {
                    return(StatusCode(500, ex.Message));
                }
            }
            else
            {
                return(StatusCode(500, "Invalid model"));
            }
        }