using Microsoft.AspNet.Identity; using Microsoft.AspNet.Mvc; using Microsoft.Extensions.OptionsModel; using Microsoft.Extensions.Localization; namespace Yavsc.ApiControllers { using YavscLib; using System; using System.Linq; using System.Security.Claims; using Microsoft.Extensions.Logging; using Models; using Services; using Yavsc.Models.Haircut; using Yavsc.Resources; using System.Threading.Tasks; using Yavsc.Helpers; using Microsoft.Data.Entity; [Route("api/haircut")] public class HairCutController : Controller { private ApplicationDbContext _context; private IEmailSender _emailSender; private IGoogleCloudMessageSender _GCMSender; private GoogleAuthSettings _googleSettings; private IStringLocalizer _localizer; private ILogger _logger; private SiteSettings _siteSettings; private SmtpSettings _smtpSettings; private UserManager _userManager; PayPalSettings _paymentSettings; public HairCutController(ApplicationDbContext context, IOptions googleSettings, IGoogleCloudMessageSender GCMSender, UserManager userManager, IStringLocalizer localizer, IEmailSender emailSender, IOptions smtpSettings, IOptions siteSettings, IOptions payPalSettings, ILoggerFactory loggerFactory) { _context = context; _GCMSender = GCMSender; _emailSender = emailSender; _googleSettings = googleSettings.Value; _userManager = userManager; _smtpSettings = smtpSettings.Value; _siteSettings = siteSettings.Value; _paymentSettings = payPalSettings.Value; _localizer = localizer; _logger = loggerFactory.CreateLogger(); } // GET: api/HairCutQueriesApi // Get the active queries for current // user, as a client public IActionResult Index() { var uid = User.GetUserId(); var now = DateTime.Now; var result = _context.HairCutQueries.Where( q=>q.ClientId == uid && q.EventDate > now && q.Status == QueryStatus.Inserted ); return Ok(result); } [HttpPost] public IActionResult PostQuery (HairCutQuery query ) { var uid = User.GetUserId(); if (!ModelState.IsValid) { return new BadRequestObjectResult(ModelState); } _context.HairCutQueries.Add(query); _context.Update(uid); return Ok(); } [HttpPost("createpayment/{id}")] public async Task CreatePayment(long id) { var apiContext = _paymentSettings.CreateAPIContext(); var query = await _context.HairCutQueries.Include(q=>q.Client). Include(q=>q.Client.PostalAddress).SingleAsync(q=>q.Id == id); var payment = apiContext.CreatePaiment(query,"sale",_logger); return Json(payment); } } }