public async Task CleanAsync(UsuarioContext context, IHostingEnvironment env, IOptions <UsuarioSettings> settings, ILogger <UsuarioContextSeed> logger) { var policy = CreatePolicy(logger, nameof(UsuarioContextSeed)); try { await policy.ExecuteAsync(async() => { var useCustomizationData = settings.Value.UseCustomizationData; var contentRootPath = env.ContentRootPath; context.SetorItems.FromSql("SELECT * FROM SETOR"); IEnumerable <UsuarioItem> st; st = useCustomizationData ? GetSetorItemsFromFile(contentRootPath, context, logger) : GetPreconfiguredItems(); foreach (UsuarioItem it in st) { var item = await context.SetorItems.SingleOrDefaultAsync(ci => ci.id_Setor == it.id_Setor); if (item != null) { context.SetorItems.Remove(item); } } await context.SaveChangesAsync(); }); } catch (DbUpdateConcurrencyException ex) { } }
public async Task SeedAsync(UsuarioContext context, IHostingEnvironment env, IOptions <UsuarioSettings> settings, ILogger <UsuarioContextSeed> logger) { var policy = CreatePolicy(logger, nameof(UsuarioContextSeed)); await policy.ExecuteAsync(async() => { var useCustomizationData = settings.Value.UseCustomizationData; var contentRootPath = env.ContentRootPath; await context.SetorItems.AddRangeAsync(useCustomizationData ? GetSetorItemsFromFile(contentRootPath, context, logger) : GetPreconfiguredItems()); await context.SaveChangesAsync(); }); }
private IEnumerable <UsuarioItem> GetSetorItemsFromFile(string contentRootPath, UsuarioContext context, ILogger <UsuarioContextSeed> logger) { string csvFileSetorItems = Path.Combine(contentRootPath, "Setup", "SetorItems.csv"); if (!File.Exists(csvFileSetorItems)) { return(GetPreconfiguredItems()); } string[] csvheaders; try { string[] requiredHeaders = { "id_empresa", "id_setor", "nome_setor" }; string[] optionalheaders = { }; csvheaders = GetHeaders(csvFileSetorItems, requiredHeaders, optionalheaders); } catch (Exception ex) { logger.LogError(ex.Message); return(GetPreconfiguredItems()); } return(File.ReadAllLines(csvFileSetorItems) .Skip(1) // skip header row .Select(row => Regex.Split(row, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")) .Select(column => CreateSetorItem(column, csvheaders)) .Where(x => x != null)); }