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