public AcceptedItemsPage(DonationStatus status) { InitializeComponent(); viewModel = new AcceptedItemsViewModel(status); this.BindingContext = viewModel; MessagingCenter.Subscribe <AcceptedDetailViewModel, Donation>(this, "PickupCancelled", OnItemCancelled); }
public DonationListViewModel(DonationStatus status) { this.donationRepository = new DonationRepository(); Title = (status == DonationStatus.PendingPickup? "Pending " : status.ToString("G")) + " Donations"; Items = new ObservableCollection <Donation>(); LoadItemsCommand = new Command(async() => await ExecuteLoadItemsAsync(status), () => !IsBusy); }
public Donation Create(Campaign campaign, Fundraiser fundraiser, DonationStatus status, double amount, string currencyCode, double amountInDefaultCurrency, string donorUserId, string donorDisplayName = null, string referenceNumber = null) { if (fundraiser != null && fundraiser.CampaignId != campaign.Id) // validate campaign { throw new InvalidOperationException("fundraiser campaign id does not match"); } var donation = new Donation { Campaign = campaign, Fundraiser = fundraiser, Status = status, Amount = amount, CurrencyCode = currencyCode, AmountInDefaultCurrency = amountInDefaultCurrency, DonorUserId = donorUserId, DonorDisplayName = donorDisplayName, ReferenceNumber = referenceNumber, DateCreated = DateTime.Now, DateLastUpdated = DateTime.Now }; if (currencyCode == campaign.DefaultCurrencyCode && amount != amountInDefaultCurrency) { throw new InvalidOperationException("invalid amount (does not match amount in default currency)"); } _context.Donations.Add(donation); _context.SaveChanges(); return(donation); }
async Task ExecuteLoadItemsAsync(DonationStatus status) { if (IsBusy) { return; } IsBusy = true; try { Items.Clear(); var items = await donationRepository.GetDonationsByDonorAsync(status); foreach (var item in items) { Items.Add(item); } } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } }
public AcceptedItemsViewModel(DonationStatus status) { LoadItemsCommand = new Command(async() => await ExecuteLoadItemsCommand(status)); donationRep = new DonationRepository(); Items = new ObservableCollection <Donation>(); string statusString = status == DonationStatus.PendingPickup ? "Pending Pickup" : status.ToString("G"); Title = statusString; }
public DonationListPage(DonationStatus status) { InitializeComponent(); this.BindingContext = viewModel = new DonationListViewModel(status) { Page = this }; MessagingCenter.Subscribe <DonationDetailViewModel, Donation>(this, "StatusChanged", OnStatusChanged); }
public IActionResult Post([FromBody] DonationStatus status) { _repository.Status.CreateStatus(status); _repository.Save(); return(CreatedAtAction("GetById", new { id = status.Id }, new { Status = status } )); }
public IActionResult Put(long id, [FromBody] DonationStatus status) { var statusFromDb = _repository.Status.GetById(id, true); if (statusFromDb == null) { return(NotFound()); } statusFromDb.Name = status.Name; _repository.Save(); return(NoContent()); }
public IActionResult GetDonorDonations(DonationStatus status) { var user = userRepository.GetUserFromPrincipal(HttpContext.User); if (!userRepository.IsActiveUser(user)) { return(new UnauthorizedResult()); } var donations = donationRepository.GetByDonorIdWithStatus(user.Id, (int)status); foreach (var donation in donations) { if (donation.RecipientId.HasValue) { donation.Recipient = userRepository.GetById(donation.RecipientId.Value); } } return(Ok(donations)); }
public IActionResult GetRecipientDonations(DonationStatus status) { var user = userRepository.GetUserFromPrincipal(HttpContext.User); if (!userRepository.IsActiveUser(user)) { return(new UnauthorizedResult()); } // Recipients can only have pending and completed donations if (status == DonationStatus.Wasted || status == DonationStatus.Listed) { return(BadRequest()); } var donations = donationRepository.GetByRecipientIdWithStatus(user.Id, (int)status); foreach (var donation in donations) { donation.Donor = userRepository.GetById(donation.DonorId); } return(Ok(donations)); }
// GET: Sdi public async Task <ActionResult> Return(string guid, int?donationId) { try { if (!donationId.HasValue) { return(RedirectToAction("Index", "Home")); } var config = new ClientConfiguration( ConfigurationManager.AppSettings["JgApiBaseUrl"], ConfigurationManager.AppSettings["JGApiKey"], 1); var client = new JustGivingClient(config); DonationStatus donationStatus = null; try { donationStatus = client.Donation.RetrieveStatus(donationId.Value); } catch { } if ((donationStatus != null && donationStatus.Status == "Accepted") || ConfigurationManager.AppSettings["SkipDonationReferenceCheck"] == "true") { if (donationStatus != null) { _indulgeMeService.Absolve(guid, donationStatus.DonationId, donationStatus.DonationRef, donationStatus.Amount, donationStatus.Reference); } else if (ConfigurationManager.AppSettings["SkipDonationReferenceCheck"] == "true") { _indulgeMeService.Absolve(guid, 1, "1", 10, "not-a-real-donation"); } var indulgence = _indulgeMeService.GetIndulgenceByGuid(guid); _indulgeMeService.GenerateIndulgence(indulgence, System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "fonts"), System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Content")); await _indulgenceEmailer.Send(indulgence, ConfigurationManager.AppSettings["IndulgencePdfRelativePath"]); _indulgeMeService.Tweet(indulgence); TempData["absolved"] = guid; ControllerContext.RequestContext.HttpContext.Cache.Remove("siteInfo"); ControllerContext.RequestContext.HttpContext.Response.RemoveOutputCacheItem(Url.Action("GetLatest", "Api")); ViewData["ShowBlessing"] = true; return(RedirectToAction("Index", "Indulgence", new { guid = guid })); } return(HttpNotFound()); } catch (Exception ex) { _log.Error("unhandled error returning from SDI", ex); return(new ContentResult() { Content = ex.Message + "\r\n" + ex.StackTrace, ContentEncoding = Encoding.UTF8, ContentType = "text/plain" }); } }
public ActionResult Absolve(int id, int?donationId) { var config = new ClientConfiguration( "https://api.staging.justgiving.com/", ConfigurationManager.AppSettings["JGApiKey"], 1); var client = new JustGivingClient(config); DonationStatus donation = null; if (donationId.HasValue) { donation = client.Donation.RetrieveStatus(donationId.Value); } else { donationId = 1; donation = new DonationStatus() { Amount = new decimal(r.NextDouble() * 100), DonationId = 1, Reference = "1" }; } var indulgence = MvcApplication.CurrentSession.Load <Indulgence>(id.ToRavenDbId("indulgences")); if (indulgence == null) { return(new HttpNotFoundResult()); } indulgence.IsBlessed = true; if (donation != null) { indulgence.AmountDonated = donation.Amount; indulgence.JustGivingDonationId = donationId.Value; indulgence.DonationReference = donation.Reference; } var sin = MvcApplication.CurrentSession.Load <Sin>(indulgence.SinId); sin.TotalDonationCount++; if (donation != null) { sin.TotalDonated += donation.Amount; } MvcApplication.CurrentSession.SaveChanges(); MvcApplication.TotalDonated = MvcApplication.CurrentSession .Query <Indulgence>("BlessedIndulgences").ToList().Sum(a => a.AmountDonated); string storagePath = HostingEnvironment.MapPath("~/content/indulgences"); string pdfFilename = string.Format("{0}/indulgence.pdf", indulgence.Id.IdValue()); string imageFilename = string.Format("{0}/indulgence.png", indulgence.Id.IdValue()); pdfFilename = Path.Combine(storagePath, pdfFilename); imageFilename = Path.Combine(storagePath, imageFilename); _indulgeMeService.GenerateIndulgence(pdfFilename, imageFilename, indulgence, HostingEnvironment.MapPath("~/content"), HostingEnvironment.MapPath("~/content")); // if the user supplied an email address send the pdf to them if (!string.IsNullOrWhiteSpace(indulgence.DonorEmailAddress)) { string donorEmailAddress = indulgence.DonorEmailAddress; string donorName = string.IsNullOrWhiteSpace(indulgence.Name) ? "" : indulgence.Name; indulgenceEmailer.Send(indulgence, pdfFilename); } try { // add the indulgence to the queue to tweet _tweetOutbox.Add(indulgence); } catch (Exception e) { log.Error("Could not tweet!", e); } TempData["absolutionId"] = id; // invalidate cache ControllerContext.RequestContext.HttpContext.Cache.Remove("siteInfo"); ControllerContext.RequestContext.HttpContext.Response.RemoveOutputCacheItem(Url.Action("GetLatest", "Api")); return(RedirectToAction("Index", "Indulgence", new { id = indulgence.Id.IdValue() })); }
public async Task <IEnumerable <Donation> > GetDonationsByRecipientAsync(DonationStatus status) { var json = await App.ApiClient.GetStringAsync($"api/donations/recipient/me/status/{status}"); return(JsonConvert.DeserializeObject <IEnumerable <Donation> >(json)); }
private bool CanWasteDonation(DonationStatus status) { return(status != DonationStatus.Wasted && status != DonationStatus.Completed); }
public async static Task <MaskDonationModel> UpdateStatus(DataContext dataContext, Guid id, DonationStatus donationStatus) { var maskDonation = await Get(dataContext, id); if (maskDonation == null) { throw new ErrorModelException(ErrorCode.NotFound, "Donation"); } if (maskDonation.Status != donationStatus) { maskDonation.Status = donationStatus; if (maskDonation.Status == DonationStatus.Received) { var maskRequest = await MaskRequest.Get(dataContext, maskDonation.RequestId); maskRequest.MaskDetails.Masks = maskRequest.MaskDetails.Masks.Join(maskDonation.Donation, m => m.Type, d => d.Type, (m, d) => { var quantity = m.Quantity - d.Quantity; return(new MaskInfo { Type = m.Type, Quantity = quantity >= 0 ? quantity : 0 }); }).ToList(); await AddDonatedMasksToAggregate(dataContext, maskDonation); } } return(maskDonation.ToMaskDonationModel()); }
} // justificativa do interessado. public void UpdateBookRequest(DonationStatus status, string note) { this.Status = status; this.DonorNote = note; }
private bool CanRelistDonation(DonationStatus status) { return(status != DonationStatus.Completed); }
public void UpdateBookUser(DonationStatus status, string note) { this.Status = status; this.Note = note; }
private bool CanCompleteDonation(DonationStatus status) { return(status == DonationStatus.PendingPickup); }