public async Task <Result <MarketSettingsErrorCodes> > AddAsync(MarketSettings model) { var entity = MarketSettingsEntity.Create(model); using (var context = _contextFactory.CreateDataContext()) { context.MarketSettings.Add(entity); try { await context.SaveChangesAsync(); return(new Result <MarketSettingsErrorCodes>()); } catch (DbUpdateException e) { if (e.InnerException is SqlException sqlException) { switch (sqlException.Number) { case MsSqlErrorCodes.DuplicateIndex: return(new Result <MarketSettingsErrorCodes>(MarketSettingsErrorCodes.NameAlreadyExists)); case MsSqlErrorCodes.PrimaryKeyConstraintViolation: return(new Result <MarketSettingsErrorCodes>(MarketSettingsErrorCodes.IdAlreadyExists)); } } throw; } } }
private static MarketSettings ToDomain(MarketSettingsEntity entity) { return(new MarketSettings { Id = entity.Id, Name = entity.Name, DividendsLong = entity.DividendsLong, DividendsShort = entity.DividendsShort, Dividends871M = entity.Dividends871M, Holidays = entity.Holidays.Select(x => x.Date).ToList(), MarketSchedule = entity.MarketSchedule.Schedule }); }
public async Task <Result <MarketSettingsErrorCodes> > DeleteAsync(string id) { using (var context = _contextFactory.CreateDataContext()) { var entity = new MarketSettingsEntity { Id = id }; context.Attach(entity); context.MarketSettings.Remove(entity); try { await context.SaveChangesAsync(); return(new Result <MarketSettingsErrorCodes>()); } catch (DbUpdateConcurrencyException e) { if (e.Message.Contains(DoesNotExistException)) { return(new Result <MarketSettingsErrorCodes>(MarketSettingsErrorCodes.MarketSettingsDoNotExist)); } throw; } catch (DbUpdateException e) { if (e.InnerException is SqlException sqlException && sqlException.Number == ForeignKeyConstraintViolation) { return(new Result <MarketSettingsErrorCodes>(MarketSettingsErrorCodes.CannotDeleteMarketSettingsAssignedToAnyProduct)); } throw; } } }