public void AddFieldReport(Multipart uploader) { try { var realizationId = long.Parse(uploader.Forms["RealizationId"]); /* * var realization = dbContext.Set<Realization>() * .Include(r => r.Transaction) * .First(r => r.Id == realizationId); */ //KawalDesaController.CheckRegionAllowed(dbContext, realization.Transaction.fkActorId); FieldReport fr = new FieldReport { fkRealizationId = realizationId, IsActivated = true, Notes = uploader.Forms["Notes"], Date = DateTime.ParseExact(uploader.Forms["Date"], "dd-MM-yyyy", CultureInfo.InvariantCulture), Pictures = new List <Blob>() }; foreach (var file in uploader.Files) { var blob = new Blob(file); fr.Pictures.Add(blob); file.Move(blob.FilePath); } dbSet.Add(fr); dbContext.SaveChanges(); } finally { uploader.DeleteUnmoved(); } }
public void UpdateSources(Multipart multipart) { try { var apbdesId = long.Parse(multipart.Forms["Id"]); var sourceURL = multipart.Forms["SourceURL"]; /* * var apbdes = dbSet.SelectOne(apbdesId, * s => new { s.IsCompleted, fkRegionId = s.fkRegionId }); * if (apbdes.IsCompleted) * throw new ApplicationException("apbdes is completed"); * KawalDesaController.CheckRegionAllowed(dbContext, apbdes.fkRegionId); */ var fileResult = multipart.Files[0]; var blob = new Blob(fileResult); dbContext.Set <Blob>().Add(blob); /* * Update(apbdesId) * .Set(e => e.SourceUrl, sourceURL) * .Set(e => e.fkSourceFileId, blob.Id) * .Save(); */ fileResult.Move(blob.FilePath); } finally { multipart.DeleteUnmoved(); } }
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 Organization Update(Multipart <Organization> multipart) { try { var org = multipart.Entity; Validate(multipart.Entity); if (!ModelState.IsValid) { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } Update(org) .Set(o => o.Name) .Set(o => o.Description) .Set(o => o.Website) .Set(o => o.Facebook) .Set(o => o.Twitter) .Set(o => o.UrlKey) .Save(); if (multipart.Files.Count > 0) { var fileResult = multipart.Files[0]; var blob = new Blob(fileResult); dbContext.Set <Blob>().Add(blob); dbContext.SaveChanges(); fileResult.Move(blob.FilePath); org.fkPictureId = blob.Id; Update(org) .Set(o => o.fkPictureId, blob.Id) .Set(o => o.PictureFileName, blob.RelativeFileName) .Save(); } return(org); } finally { multipart.DeleteUnmoved(); } }
public void Upload(Multipart <Transfer> multipart, DocumentUploadType type, SourceDocumentFunction fn, string regionId, string apbnKey) { try { KawalDesaController.CheckRegionAllowed(dbContext, regionId); DocumentUploadType t = (DocumentUploadType)type; var region = dbContext.Set <Region>() .Include(r => r.Parent) .Include(r => r.Parent.Parent) .Include(r => r.Parent.Parent.Parent) .Include(r => r.Parent.Parent.Parent.Parent) .First(r => r.Id == regionId); var apbn = dbContext.Set <Apbn>().First(a => a.Key == apbnKey); var user = KawalDesaController.GetCurrentUser(); //if (region.Type != RegionType.NASIONAL && region.Type != RegionType.KABUPATEN) // throw new ApplicationException("only allowed to upload on nasional or kabupaten"); using (var tx = dbContext.Database.BeginTransaction()) { Transfer transfer = multipart.Entity; if (transfer != null) { ModelState.Clear(); Validate(transfer); if (!ModelState.IsValid) { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } transfer.IsActivated = true; transfer.fkRegionId = regionId; transfer.Year = Convert.ToInt32(apbnKey.Substring(0, 4)); dbContext.Set <Transfer>().Add(transfer); dbContext.SaveChanges(); dumpMessager.Message("p " + apbnKey + " " + regionId); } if (fn == SourceDocumentFunction.Allocation) { string stype = null; switch (type) { case DocumentUploadType.NationalDd: case DocumentUploadType.RegionalDd: stype = "dd"; break; case DocumentUploadType.NationalAdd: case DocumentUploadType.RegionalAdd: stype = "add"; break; case DocumentUploadType.NationalBhpr: case DocumentUploadType.RegionalBhpr: stype = "bhpr"; break; } if (stype == null) { throw new ApplicationException("invalid doc type: " + type); } dumpMessager.Message(stype + " " + apbnKey + " " + regionId); } foreach (var fileResult in multipart.Files) { var blob = new Blob(fileResult); dbContext.Set <Blob>().Add(blob); dbContext.SaveChanges(); fileResult.Move(blob.FilePath); var doc = new SourceDocument(); doc.ThumbnailCreated = false; doc.FileName = blob.RelativeFileName; doc.fkCreatedById = user.Id; doc.fkOrganizationId = user.fkOrganizationId.Value; doc.DateCreated = DateTime.Now; doc.Type = type; doc.Function = fn; doc.ApbnKey = apbnKey; doc.fkRegionId = regionId; doc.fkFileId = blob.Id; if (transfer != null) { doc.fkTransferId = transfer.Id; } dbContext.Set <SourceDocument>().Add(doc); dbContext.SaveChanges(); } tx.Commit(); } } finally { multipart.DeleteUnmoved(); } }
public void AddTransferTransaction(Multipart <Transaction> multipart) { Validate(multipart.Entity); if (!ModelState.IsValid) { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } var context = HttpContext.Current; var principal = HttpContext.Current.User; try { var user = (principal.Identity as KawalDesaIdentity).User; var transaction = multipart.Entity; KawalDesaController.CheckRegionAllowed(principal, dbContext, transaction.fkDestinationId); var actor = dbContext.Set <Region>().First(r => r.Id == transaction.fkActorId); var source = dbContext.Set <Region>().First(r => r.Id == transaction.fkSourceId); var destination = dbContext.Set <Region>().First(r => r.Id == transaction.fkDestinationId); long?accountId = null; if (transaction.fkActorId == transaction.fkDestinationId) { var targetSource = transaction.fkSourceId == "0" ? "apbn" : "add"; //accountId = dbContext.Set<Account>().First(a => a.TargetSource == targetSource && a.Apbdes.fkRegionId == transaction.fkDestinationId).Id; } string roleRequired = null; if (actor.Type == RegionType.NASIONAL || actor.Type == RegionType.KABUPATEN) { roleRequired = Role.VOLUNTEER_TRANSFER; } else if (actor.Type == RegionType.DESA) { if ((source.Type == RegionType.KABUPATEN || source.Type == RegionType.NASIONAL) && destination.Type == RegionType.DESA) { roleRequired = Role.VOLUNTEER_DESA; } } if (roleRequired == null) { throw new ApplicationException(String.Format("No role matched for transaction: {0}, {1}, {2}", actor.Type, source.Type, destination.Type)); } if (!principal.IsInRole(roleRequired)) { throw new ApplicationException("Principal is not in role"); } long?blobId = null; if (multipart.Files.Count > 0) { var fileResult = multipart.Files[0]; var blob = new Blob(fileResult); dbContext.Set <Blob>().Add(blob); dbContext.SaveChanges(); fileResult.Move(blob.FilePath); blobId = blob.Id; } transaction.fkSourceFileId = blobId; transaction.IsActivated = true; transaction.fkCreatedById = user.Id; transaction.fkAccountId = accountId; dbSet.Add(transaction); dbContext.SaveChanges(); } finally { multipart.DeleteUnmoved(); } }
public void AddAccountTransaction(Multipart multipart) { try { if (multipart.GetForm("Amount") != null && long.Parse(multipart.GetForm("Amount")) < 0) { throw new ApplicationException("Amount must be greater than 0"); } if (multipart.GetForm("Description") == null) { throw new ApplicationException("Description cannot be empty"); } Transaction transaction = new Transaction { Amount = long.Parse(multipart.GetForm("Amount")), fkAccountId = long.Parse(multipart.GetForm("fkAccountId")), Date = DateTime.ParseExact(multipart.GetForm("Date"), "dd-MM-yyyy", CultureInfo.InvariantCulture) }; /* * Realization realization = new Realization * { * Description = multipart.GetForm("Description") * }; */ var account = dbContext.Set <Account>() .Include(a => a.Apbdes) .First(a => a.Id == transaction.fkAccountId); KawalDesaController.CheckRegionAllowed(dbContext, account.Apbdes.fkRegionId); transaction.fkActorId = account.Apbdes.fkRegionId; dbContext.Set <Transaction>().Add(transaction); //realization.fkTransactionId = transaction.Id; //dbContext.Set<Realization>().Add(realization); if (multipart.Files.Count > 0) { var fileResult = multipart.Files[0]; var blob = new Blob(fileResult); dbContext.Set <Blob>().Add(blob); /* * TODO * TransactionFile transactionFile = new TransactionFile() * { * FileName = blob.Name, * fkFileId = blob.Id, * IsActivated = true * }; * dbContext.Set<TransactionFile>().Add(transactionFile); */ fileResult.Move(blob.FilePath); } dbContext.SaveChanges(); } finally { multipart.DeleteUnmoved(); } }