public async Task <NewClanResponseModel> AddNewClan(NewClanRequestModel model) { return(await _clanService.AddNewClan(model)); }
public async Task <NewClanResponseModel> AddNewClan(NewClanRequestModel model) { var response = new NewClanResponseModel() { IsSuccess = true, IsNameValid = true, IsAcronymValid = true, IsLeaderValid = true }; #region EF if (await CheckName(model.Name)) { response.IsNameValid = false; } if (await CheckAcronym(model.Acronym)) { response.IsAcronymValid = false; } if (await CheckLeader(model.PlayerId)) { response.IsLeaderValid = false; } if (response.IsAcronymValid == false || response.IsNameValid == false || response.IsLeaderValid == false) { response.IsSuccess = false; return(response); } var newClan = new Clans { Acronym = model.Acronym, Name = model.Name, Experience = 0, AvatarId = model.AvatarId, AvatarUrl = model.AvatarUrl }; var result = await _context.Clans.AddAsync(newClan); if (result.State != EntityState.Added) { response.IsSuccess = false; return(response); } await _context.SaveChangesAsync(); var clanEntity = await _context.Clans.FirstOrDefaultAsync(t => t.Acronym == model.Acronym && t.Name == model.Name); bool isLeaderValid = false; try { isLeaderValid = await AddClanLeader(model.PlayerId, clanEntity.Id, ClanFunction.Leader); } catch (Exception e) { Logger.GetInstance().Error(e.Message); } finally { response.IsLeaderValid = isLeaderValid; if (!response.IsLeaderValid) { _context.Clans.Remove(clanEntity); await _context.SaveChangesAsync(); response.IsSuccess = false; } } if (!response.IsLeaderValid) { return(response); } var clanStatistics = new ClanStatistics() { ClanId = clanEntity.Id, Draws = 0, Losses = 0, Wins = 0 }; var csResult = await _context.ClanStatistics.AddAsync(clanStatistics); if (csResult.State != EntityState.Added) { var leaderEntity = await _context.ClanMembers.FirstOrDefaultAsync(t => t.PlayerId == model.PlayerId); _context.ClanMembers.Remove(leaderEntity); _context.Clans.Remove(clanEntity); response.IsSuccess = false; } await _context.SaveChangesAsync(); #endregion #region SqlManager //var result = await _sqlManager.ExecuteDataCommand("[Common].[AddNewClan]", // CommandType.StoredProcedure, // null, // new SqlParameter[] // { // model.Acronym.ToSqlParameter("Acronym"), // model.Name.ToSqlParameter("Name"), // model.AvatarId.ToSqlParameter("AvatarId"), // model.AvatarUrl.ToSqlParameter("AvatarUrl") // }); //var resultRows = result.Elements.First().Rows.First().Elements; //response.IsNameValid = Convert.ToBoolean(resultRows[0]); //response.IsAcronymValid = Convert.ToBoolean(resultRows[1]); //var clanId = Convert.ToInt32(resultRows[2]); #endregion return(response); }