Exemple #1
0
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            ProfessionalPayment professionalPayment = await _db.ProfessionalPayments.FindAsync(id);

            _db.ProfessionalPayments.Remove(professionalPayment);
            await _db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
Exemple #2
0
        public async Task <ActionResult> Edit([Bind(Include = "ProfessionalPaymentId,ProfessionalWorkerId,Amount,AmountPaid")] ProfessionalPayment professionalPayment)
        {
            if (ModelState.IsValid)
            {
                _db.Entry(professionalPayment).State = EntityState.Modified;
                await _db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            ViewBag.ProfessionalWorkerId = new SelectList(_db.ProfessionalWorkers, "ProfessionalWorkerId", "HighestQualification", professionalPayment.ProfessionalWorkerId);
            return(View(professionalPayment));
        }
Exemple #3
0
        // GET: ProfessionalPayments/Details/5
        public async Task <ActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ProfessionalPayment professionalPayment = await _db.ProfessionalPayments.FindAsync(id);

            if (professionalPayment == null)
            {
                return(HttpNotFound());
            }
            return(View(professionalPayment));
        }
Exemple #4
0
        // GET: ProfessionalPayments/Edit/5
        public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ProfessionalPayment professionalPayment = await _db.ProfessionalPayments.FindAsync(id);

            if (professionalPayment == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ProfessionalWorkerId = new SelectList(_db.ProfessionalWorkers, "ProfessionalWorkerId", "HighestQualification", professionalPayment.ProfessionalWorkerId);
            return(View(professionalPayment));
        }
Exemple #5
0
        // GET: ProfessionalPayments/ConfrimPayment
        public async Task <ActionResult> ConfrimPayment(string reference)
        {
            var testOrLiveSecret = ConfigurationManager.AppSettings["PayStackSecret"];
            var api = new PayStackApi(testOrLiveSecret);
            //Verifying a transaction
            var verifyResponse = api.Transactions.Verify(reference); // auto or supplied when initializing;

            if (verifyResponse.Status)
            {
                /*
                 * You can save the details from the json object returned above so that the authorization code
                 * can be used for charging subsequent transactions
                 *
                 * // var authCode = verifyResponse.Data.Authorization.AuthorizationCode
                 * // Save 'authCode' for future charges!
                 *
                 */
                //var customfieldArray = verifyResponse.Data.Metadata.CustomFields.A

                var convertedValues = new List <SelectableEnumItem>();
                var valuepair       = verifyResponse.Data.Metadata.Where(x => x.Key.Contains("custom")).Select(s => s.Value);

                foreach (var item in valuepair)
                {
                    convertedValues = ((JArray)item).Select(x => new SelectableEnumItem
                    {
                        key   = (string)x["display_name"],
                        value = (string)x["value"]
                    }).ToList();
                }
                //var studentid = _db.Users.Find(id);
                var professionalPayment = new ProfessionalPayment()
                {
                    //FeeCategoryId = Convert.ToInt32(verifyResponse.Data.Metadata.CustomFields[3].Value),
                    ProfessionalWorkerId = convertedValues.Where(x => x.key.Equals("professionalworkerid")).Select(s => s.value).FirstOrDefault(),
                    PaymentDateTime      = DateTime.Now,
                    Amount  = Convert.ToDecimal(convertedValues.Where(x => x.key.Equals("amount")).Select(s => s.value).FirstOrDefault()),
                    IsPayed = true,
                    //StudentId = "HAS-201",
                    AmountPaid = _query.ConvertToNaira(verifyResponse.Data.Amount),
                };
                _db.ProfessionalPayments.Add(professionalPayment);
                await _db.SaveChangesAsync();
            }

            return(RedirectToAction("Index"));
        }
Exemple #6
0
        public async Task <ActionResult> Create(ProfessionalPayment model)
        {
            if (ModelState.IsValid)
            {
                var workerId = User.Identity.GetUserId();

                var worker = await _db.ProfessionalWorkers.AsNoTracking()
                             .FirstOrDefaultAsync(x => x.ProfessionalWorkerId.Equals(workerId));

                var testOrLiveSecret = ConfigurationManager.AppSettings["PayStackSecret"];
                var api = new PayStackApi(testOrLiveSecret);
                // Initializing a transaction
                //var response = api.Transactions.Initialize("*****@*****.**", 5000000);
                var transactionInitializaRequest = new TransactionInitializeRequest
                {
                    //Reference = "SwifKampus",
                    AmountInKobo = _query.ConvertToKobo((int)model.Amount),
                    //CallbackUrl = "https://unibenportal.azurewebsites.net/SchoolFeePayments/ConfrimPayment",
                    CallbackUrl = "http://localhost:59969/ProfessionalPayments/ConfrimPayment",
                    Email       = worker.Email,
                    Bearer      = "Application fee",

                    CustomFields = new List <CustomField>
                    {
                        new CustomField("professionalworkerid", "professionalworkerid", worker.ProfessionalWorkerId),
                        new CustomField("amount", "amount", model.Amount.ToString(CultureInfo.InvariantCulture))
                        //new CustomField("sessionid", "sessionid", schoolFeePayment.SessionId.ToString()),
                        //new CustomField("feepaymentid","feepaymentid", schoolFeePayment.FeeCategoryId.ToString())
                        //new CustomField("paymentmode","paymentmode", schoolFeePayment.p)
                    }
                };
                var response = api.Transactions.Initialize(transactionInitializaRequest);

                if (response.Status)
                {
                    //redirect to authorization url
                    return(RedirectPermanent(response.Data.AuthorizationUrl));
                    // return Content("Successful");
                }
                return(Content("An error occurred"));
            }
            //return View(schoolFeePayment);
            return(RedirectToAction("Create"));
        }
Exemple #7
0
        public ActionResult Create(ProfessionalPaymentToCreateUpdateDto dto)
        {
            var professional = _professionalRepo.GetById(dto.ProfessionalId);

            if (professional == null)
            {
                return(NotFound("Professional not found"));
            }

            var month = _monthRepo.GetById(dto.MonthId);

            if (month == null)
            {
                return(NotFound("Month not found"));
            }

            if (dto.QuantityHours <= 0)
            {
                return(ValidationProblem("La cantidad de horas debe ser mayor a cero"));
            }

            var paymentRepeted = _repository.GetByQuery(x => x.ProfessionalId == dto.ProfessionalId && x.MonthId == dto.MonthId);

            if (paymentRepeted != null && paymentRepeted.Count() > 0)
            {
                return(ValidationProblem("El professional ya tiene el mes abonado."));
            }

            var payment = new ProfessionalPayment(dto.ProfessionalId, dto.MonthId, dto.ValueHour, dto.QuantityHours, dto.Amount,
                                                  professional.FullName + " | " + month.Name);

            _repository.Create(payment);

            var entity = _repository.GetByIdInclude(payment.Id, IncludeExpressions);

            var response = _mapper.Map <ProfessionalPaymentDto>(entity);

            return(Ok(response));
        }