Exemplo n.º 1
0
        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;
                }
            }
        }
Exemplo n.º 2
0
 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
     });
 }
Exemplo n.º 3
0
        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;
                }
            }
        }