/// <summary> /// Creates new bar in the database. /// </summary> /// <param name="barDTO">bar DTO model.</param> /// <returns>The created bar.</returns> public async Task <BarDTO> CreateAsync(BarDTO barDTO) { try { if (await BarExistsByName(barDTO.Name)) { var theBar = await _context.Bars .FirstOrDefaultAsync(c => c.Name.Equals(barDTO.Name)); if (theBar.IsDeleted == true) { theBar.IsDeleted = false; } _context.Bars.Update(theBar); await _context.SaveChangesAsync(); return(_mapper.MapEntityToDTO(theBar)); } else { var bar = _mapper.MapDTOToEntity(barDTO); _context.Bars.Add(bar); await _context.SaveChangesAsync(); bar = await _context.Bars.FirstOrDefaultAsync(b => b.Name == barDTO.Name); return(_mapper.MapEntityToDTO(bar)); } } catch (Exception) { throw new ArgumentNullException("Fail to create bar"); } }