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