public void Upload(Multipart <Spreadsheet> multipart, AdapterContext context) { try { List <Region> regions = null; if (context.Region.Type == RegionType.NASIONAL) { regions = DbContext.Set <Region>().Where(r => r.Type == RegionType.KABUPATEN).ToList(); } else { regions = DbContext.Set <Region>().Where(r => r.Type == RegionType.DESA && r.Parent.fkParentId == context.Region.Id).ToList(); } var allocations = new AllocationSpreadsheetReader <TAllocation>().Read(regions, new FileInfo(multipart.Files[0].FilePath)); var spreadsheet = multipart.Entity; var user = KawalDesaController.GetCurrentUser(); var fileResult = multipart.Files[0]; var blob = new Blob(fileResult); DbContext.Set <Blob>().Add(blob); DbContext.SaveChanges(); fileResult.Move(blob.FilePath); spreadsheet.FileName = blob.RelativeFileName; spreadsheet.fkCreatedById = user.Id; spreadsheet.fkOrganizationId = user.fkOrganizationId.Value; spreadsheet.DateCreated = DateTime.Now; spreadsheet.DateActivated = DateTime.Now; spreadsheet.Type = context.Type; spreadsheet.ApbnKey = context.Apbn.Key; spreadsheet.fkRegionId = context.Region.Id; spreadsheet.fkFileId = blob.Id; DbContext.Set <Spreadsheet>().Add(spreadsheet); DbContext.SaveChanges(); foreach (var allocation in allocations) { allocation.fkSpreadsheetId = spreadsheet.Id; Init(context, allocation); DbContext.Set <TAllocation>().Add(allocation); } DbContext.SaveChanges(); new SpreadsheetActivator <TAllocation>().Activate(DbContext, spreadsheet); } finally { multipart.DeleteUnmoved(); } }
public void Publish(Stream fileStream, AdapterContext context, string notes) { try { List <Region> regions = null; if (context.Region.Type == RegionType.NASIONAL) { regions = DbContext.Set <Region>().Where(r => r.Type == RegionType.KABUPATEN).ToList(); } else { regions = DbContext.Set <Region>().Where(r => r.Type == RegionType.DESA && r.Parent.fkParentId == context.Region.Id).ToList(); } Blob blob = new Blob(); blob.Name = "Alocation_xxx.xlsx"; DbContext.Set <Blob>().Add(blob); DbContext.SaveChanges(); byte[] fileBytes = null; using (MemoryStream ms = new MemoryStream()) { fileStream.CopyTo(ms); fileBytes = ms.ToArray(); } string fileName = blob.Id + ".xlsx"; string root = HttpContext.Current.Server.MapPath("~/Content/Files"); var user = KawalDesaController.GetCurrentUser(); Directory.CreateDirectory(root); String filePath = Path.Combine(root, fileName); File.WriteAllBytes(filePath, fileBytes); Spreadsheet spreadsheet = new Spreadsheet(); spreadsheet.File = blob; spreadsheet.Notes = notes; spreadsheet.fkCreatedById = user.Id; spreadsheet.fkOrganizationId = user.fkOrganizationId.Value; spreadsheet.DateCreated = DateTime.Now; spreadsheet.DateActivated = DateTime.Now; spreadsheet.Type = context.Type; spreadsheet.ApbnKey = context.Apbn.Key; spreadsheet.fkRegionId = context.Region.Id; spreadsheet.fkFileId = blob.Id; DbContext.Set <Spreadsheet>().Add(spreadsheet); DbContext.SaveChanges(); var allocations = new AllocationSpreadsheetReader <TAllocation>().Read(regions, fileBytes); foreach (var allocation in allocations) { allocation.fkSpreadsheetId = spreadsheet.Id; Init(context, allocation); DbContext.Set <TAllocation>().Add(allocation); } DbContext.SaveChanges(); new SpreadsheetActivator <TAllocation>().Activate(DbContext, spreadsheet); } catch (Exception ex) { throw ex; } }