Example #1
0
        public async Task <IActionResult> CouponPdf(string couponId, string userId)
        {
            var currentUserCoupon = _couponService.GetUserCoupon(userId, new Guid(couponId));
            var currentCoupon     = await _couponService.GetCouponById(new Guid(couponId));

            var model = CouponGenerator.ConvertUserCouponToPdfViewModel(currentUserCoupon, currentCoupon);

            return(View(model));
        }
Example #2
0
        public async Task <RepositoryActionResult <CouponManagement> > CreateAsync(CouponManagement model, string userId, int quantity, int length)
        {
            try
            {
                //throw new Exception("manuel  hata");
                var service = new CouponGenerator();
                if (!model.IsBulk)
                {
                    var code     = model.Codes.FirstOrDefault().Code;
                    var existing = await _Db.CouponCodes.Where(x => x.Code == code).FirstOrDefaultAsync();

                    if (existing != null)
                    {
                        return(new RepositoryActionResult <CouponManagement>
                        {
                            Status = RepositoryActionStatus.Found,
                            Message = "Veritabanına kayıtlı böyle bir kod bulundu: " + code
                        });
                    }
                }
                model.CreatedAt = DateTime.UtcNow;
                model.CreatedBy = userId;
                await _Db.CouponManagements.AddAsync(model);

                var resultInsertManagement = await _Db.SaveChangesAsync();

                if (model.IsBulk)
                {
                    if (resultInsertManagement > 0)
                    {
                        var remainingCodes = length;
                        var totalCodes     = new List <string>();

                        while (totalCodes.Count != quantity)
                        {
                            totalCodes.AddRange(service.GenerateCode(quantity, remainingCodes));
                            totalCodes     = service.RemoveDublicateCode(totalCodes, out int deletedCount);
                            remainingCodes = deletedCount;
                        }

                        var someCollectionOfEntitiesToInsert = totalCodes.Select(x => new CouponCode
                        {
                            CouponManagementId = model.Id,
                            Code     = x,
                            IsActive = true,
                            IsUsed   = false
                        }).ToList();
                        await _Db.BulkInsertAsync(someCollectionOfEntitiesToInsert);
                    }
                }
                return(new RepositoryActionResult <CouponManagement>
                {
                    Entity = model,
                    Status = RepositoryActionStatus.Created
                });
            }
            catch (Exception ex)
            {
                return(new RepositoryActionResult <CouponManagement>
                {
                    Status = RepositoryActionStatus.Error,
                    Message = ex.Message + ex.InnerException == null ? "" : ex.InnerException.Message
                });
            }
        }