Ejemplo n.º 1
0
        // Dear 383 student, below is an example of async / await
        // further reading: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/
        public async Task <ActionResult <FarmFieldTicketDto> > CreateTicket(FarmFieldTicketDto targetValue)
        {
            if (targetValue.TicketTimeSlot < DateTimeOffset.UtcNow ||
                !await context.FarmFields.AnyAsync(x => x.Active && x.Id == targetValue.FarmFieldId))
            {
                return(BadRequest());
            }

            var user = await userManager.GetUserAsync(User);

            if (user == null)
            {
                return(BadRequest());
            }

            var addedItem = context.Set <FarmFieldTicket>().Add(new FarmFieldTicket
            {
                UserId         = user.Id,
                FarmFieldId    = targetValue.FarmFieldId,
                TicketTimeSlot = targetValue.TicketTimeSlot
            });
            await context.SaveChangesAsync();

            targetValue.Id = addedItem.Entity.Id;
            return(Created(string.Empty, targetValue));
        }
        // Dear 383 student, below is an example of async / await
        // further reading: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/
        public async Task <ActionResult <FarmFieldTicketDto> > CreateTicket(FarmFieldTicketDto targetValue)
        {
            if (!await context.FarmFields.AnyAsync(x => x.Active && x.Id == targetValue.FarmFieldId))
            {
                return(BadRequest());
            }

            var addedItem = context.Set <FarmFieldTicket>().Add(new FarmFieldTicket
            {
                FarmFieldId = targetValue.FarmFieldId
            });
            await context.SaveChangesAsync();

            targetValue.Id = addedItem.Entity.Id;
            return(Created(string.Empty, targetValue));
        }
Ejemplo n.º 3
0
        //helper method---creating farmfield tickets of respective farm(~~following initial design, wasn't really needed)
        private int CreateFarmFieldTickets(FarmFieldTicketDto farmfieldticketdto)
        {
            if (_context.FarmFields.Any(x => x.Active && x.Id == farmfieldticketdto.FarmFieldId))
            {
                var addedItem = _context.FarmFieldTickets.Add(new FarmFieldTicket
                {
                    FarmFieldId = farmfieldticketdto.FarmFieldId
                });

                _context.SaveChanges();

                return(addedItem.Entity.Id);
            }
            else
            {
                return(0);
            }
        }
Ejemplo n.º 4
0
        //[Authorize(Roles = Roles.Customer)]
        // Dear 383 student, below is an example of async / await
        // further reading: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/
        public async Task <ActionResult <FarmFieldTicketDto> > CreateTicket(FarmFieldTicketDto targetValue)
        {
            if (targetValue.TicketTimeSlot < DateTimeOffset.UtcNow ||
                !await context.FarmFields.AnyAsync(x => x.Active && x.Id == targetValue.FarmFieldId))
            {
                return(BadRequest());
            }

            var addedItem = context.Set <FarmFieldTicket>().Add(new FarmFieldTicket
            {
                FarmFieldId     = targetValue.FarmFieldId,
                TicketTimeSlot  = targetValue.TicketTimeSlot,
                UserId          = targetValue.UserId,
                SmallBucketQty  = targetValue.SmallBucketQty,
                MediumBucketQty = targetValue.MediumBucketQty,
                LargeBucketQty  = targetValue.LargeBucketQty
            });
            await context.SaveChangesAsync();

            targetValue.Id = addedItem.Entity.Id;
            return(Created(string.Empty, targetValue));
        }
Ejemplo n.º 5
0
        public async Task <ActionResult> CreateTransaction(List <ItemDto> itemDto)
        {
            //finding out logged in user and his cart id
            var            currentlyLoggedInCustomer = Int32.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier));
            Nullable <int> cartId = _context.Set <Cart>().Where(x => x.UserId == currentlyLoggedInCustomer).Select(y => y.Id).FirstOrDefault();

            //if the user is admin, he has no cart.......cart only for customers
            if (cartId == null || itemDto[0].FarmFieldId == 0)
            {
                return(BadRequest());
            }

            // creating farm field tickets first for items table from the farmfieldId
            var listOfTicketIds = new List <int>();

            for (int i = 0; i < itemDto.Count; i++)
            {
                var farmfieldticketdto = new FarmFieldTicketDto();
                farmfieldticketdto.FarmFieldId = itemDto[i].FarmFieldId;
                var farmFieldTicketId = CreateFarmFieldTickets(farmfieldticketdto); //sending dto to another method to create tickets
                if (farmFieldTicketId == 0)
                {
                    return(BadRequest());
                }
                else
                {
                    listOfTicketIds.Add(farmFieldTicketId);
                }
            }

            //creating list of items for transaction table
            var listOfItems = new List <Item>();
            var totalPrice  = 0;    //total price for transaction table

            for (int i = 0; i < listOfTicketIds.Count; i++)
            {
                var unitPrice  = itemDto[i].Price;
                var tempSizeId = _context.UnitPrices.Where(x => x.farmFieldId == itemDto[i].FarmFieldId && x.rate == unitPrice).Select(y => y.sizeId).FirstOrDefault();

                var item = new Item
                {
                    farmFieldTicketId = listOfTicketIds[i],
                    SizeId            = tempSizeId,
                    Quantity          = itemDto[i].Quantity,
                    Price             = unitPrice * (itemDto[i].Quantity)
                };
                totalPrice += item.Price;
                listOfItems.Add(item);
                _context.Items.Add(item);
            }

            //Finally creating transaction from above created entities
            var newTransaction = new Transaction()
            {
                Items      = listOfItems,
                TotalPrice = totalPrice,
                cartId     = (int)cartId,
                Redeemed   = false,
                Date       = System.DateTime.Now
            };

            _context.Transactions.Add(newTransaction);
            await _context.SaveChangesAsync();

            // return new TransactionDto();
            return(Ok());
        }