public async Task <IActionResult> PutUserTickets(int id, UserTickets userTickets)
        {
            if (id != userTickets.UserId)
            {
                return(BadRequest());
            }

            _context.Entry(userTickets).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!UserTicketsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Exemple #2
0
        public static string GetUserTicket(RestCommand command, int ticketID)
        {
            UserTicket userTicket = UserTickets.GetUserTicket(command.LoginUser, ticketID);

            if (userTicket.OrganizationID != command.Organization.OrganizationID)
            {
                throw new RestException(HttpStatusCode.Unauthorized);
            }
            return(userTicket.GetXml("UserTicket", true));
        }
Exemple #3
0
        public static void CreateTicketUserAssociation(int userId, int ticketId, HelpDeskContext _context)
        {
            // Create association with user
            UserTickets userTicket = new UserTickets()
            {
                UserId   = userId,
                TicketId = ticketId
            };

            // Add association to database
            _context.UserTickets.Add(userTicket);
            _context.SaveChanges();
        }
Exemple #4
0
        public static string GetUserTickets(RestCommand command)
        {
            UserTickets userTickets = new UserTickets(command.LoginUser);

            userTickets.LoadByOrganizationID(command.Organization.OrganizationID);

            if (command.Format == RestFormat.XML)
            {
                return(userTickets.GetXml("UserTickets", "UserTicket", true, command.Filters));
            }
            else
            {
                throw new RestException(HttpStatusCode.BadRequest, "Invalid data format");
            }
        }
        public async Task <ActionResult <UserTickets> > PostUserTickets(UserTickets userTickets)
        {
            _context.UserTickets.Add(userTickets);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (UserTicketsExists(userTickets.UserId))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtAction("GetUserTickets", new { id = userTickets.UserId }, userTickets));
        }
Exemple #6
0
        public async Task <Object> ChangeReservationTicket(string ticketID, string typeChange)
        {
            string defaultTime = "1/1/0001 00:00:00";

            var ticket = await _context.Tickets.FindAsync(int.Parse(ticketID));

            if (ticket == null)
            {
                return(NotFound("Changing failed. Server not found ticket in data base."));
            }

            var userTicket  = new UserTickets();
            var userTickets = _context.UserTickets;

            foreach (var ut in userTickets)
            {
                if (ut.TicketID.Equals(long.Parse(ticketID)))
                {
                    userTicket = ut;
                    break;
                }
            }

            if (typeChange.Equals("yes"))
            {
                long jmbg = -1;
                foreach (var tic in userTickets)
                {
                    if (tic.TicketID == long.Parse(ticketID))
                    {
                        jmbg = tic.UserName;
                    }
                }

                userTicket.FriendConfirmed = true;
                _context.UserTickets.Update(userTicket);
                _context.SaveChanges();

                // povecanje poena
                var user = await _userManager.FindByIdAsync(jmbg.ToString());

                user.Points += 70;
                await _userManager.UpdateAsync(user);

                // avikompanija smanjuje svoj broj prodatih karata
                AirlineNumberOfTicketMethod(ticketID, "plus");
            }
            else
            {
                long jmbg = -1;
                foreach (var tic in userTickets)
                {
                    if (tic.TicketID == long.Parse(ticketID))
                    {
                        jmbg = tic.UserName;
                    }
                }

                ticket.IsTicketPurchased    = false;
                ticket.TimeOfTicketPurchase = DateTime.Parse(defaultTime);
                _context.Tickets.Update(ticket);
                _context.SaveChanges();

                _context.UserTickets.Remove(userTicket);
                _context.SaveChanges();

                // umanjenje poena i smanjenje broja prodatih arat, kod odbijanja ne treba..jer nikom nista !!!
            }
            return(Ok());
        }
Exemple #7
0
        public async Task <Object> FriendAndMeBookingFlight(FriendsAndMeModel model)
        {
            string[]      friends   = model.Friends.Split('|');
            List <string> ticketIDs = model.Tickets.Split('|').ToList();

            #region 10.1 - Prvo sebe unesem u bazu
            // prvo sebe unesem u bazu..metoda isti kod kao prethodna
            var userI = await _userManager.FindByNameAsync(model.Username);

            if (userI == null)
            {
                return(NotFound("Booking flight failed. Server not found user in database."));
            }

            var reservedTickets = _context.UserTickets;
            foreach (var ticket in reservedTickets)
            {
                if (ticket.UserName.Equals(long.Parse(userI.Id)) && ticket.TicketID.Equals(long.Parse(ticketIDs[0])))
                {
                    return(NotFound("Booking flight failed. User already have this ticket in his reservated tickets."));
                }
            }

            UserTickets userTicket = new UserTickets()
            {
                UserName        = long.Parse(userI.Id),
                TicketID        = long.Parse(ticketIDs[0]),
                FriendConfirmed = true
            };
            // sam sebi sam prijatelj

            _context.UserTickets.Add(userTicket);
            _context.SaveChanges();

            // sada je potrebno tu kartu postaviti da je rezervisana
            try
            {
                var findTicket = await _context.Tickets.FindAsync(int.Parse(ticketIDs[0]));

                findTicket.IsTicketPurchased    = true;
                findTicket.TimeOfTicketPurchase = DateTime.Now;

                try
                {
                    _context.Tickets.Update(findTicket);
                    _context.SaveChanges();

                    var user = await _userManager.FindByNameAsync(model.Username);

                    user.Points += 70;
                    var result = await _userManager.UpdateAsync(user);

                    // avikompanija povecava svoj broj prodatih karata
                    AirlineNumberOfTicketMethod(ticketIDs[0], "plus");
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            #endregion
            #region 10.2 - Zatim ubacim i prijatelje

            // prvo izbacim mene
            ticketIDs.RemoveAt(0);

            for (int i = 0; i < ticketIDs.Count; i++)
            {
                var userFriend = await _userManager.FindByNameAsync(friends[i]);

                if (userFriend == null)
                {
                    return(NotFound("Booking flight failed. Server not found friend in database."));
                }

                //var reservedTickets = _context.UserTickets;
                foreach (var ticket in reservedTickets)
                {
                    if (ticket.UserName.Equals(long.Parse(userFriend.Id)) && ticket.TicketID.Equals(long.Parse(ticketIDs[i])))
                    {
                        return(NotFound("Booking flight failed. Friend already have this ticket in his reservated tickets."));
                    }
                }

                UserTickets newTicket = new UserTickets()
                {
                    UserName        = long.Parse(userFriend.Id),
                    TicketID        = long.Parse(ticketIDs[i]),
                    FriendConfirmed = false
                };
                // prijatelji ce trebati potvrditi. i pored toga...karta ce biti na cekanju i samim tim je za sada zauzeta

                _context.UserTickets.Add(newTicket);
                _context.SaveChanges();

                // sada je potrebno tu kartu postaviti da je rezervisana
                try
                {
                    var findTicket = await _context.Tickets.FindAsync(int.Parse(ticketIDs[i]));

                    findTicket.IsTicketPurchased    = true;
                    findTicket.TimeOfTicketPurchase = DateTime.Now;

                    try
                    {
                        _context.Tickets.Update(findTicket);
                        _context.SaveChanges();

                        //ako je sve u redu..pronadjem mejl od korisnika tj prijatelja i poslajem mu mejl

                        await SendEmailAsync(model.Username, userFriend.Email, findTicket);
                    }
                    catch (Exception e)
                    {
                        throw e;
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            #endregion

            return(Ok());
        }
Exemple #8
0
        public async Task <Object> BookAFlight(string username, string ticketID)
        {
            var userI = await _userManager.FindByNameAsync(username);

            if (userI == null)
            {
                return(NotFound("Booking flight failed. Server not found user in database."));
            }

            var reservedTickets = _context.UserTickets;

            foreach (var ticket in reservedTickets)
            {
                if (ticket.UserName.Equals(long.Parse(userI.Id)) && ticket.TicketID.Equals(long.Parse(ticketID)))
                {
                    return(NotFound("Booking flight failed. User already have this ticket in his reservated tickets."));
                }
            }

            UserTickets userTicket = new UserTickets()
            {
                UserName        = long.Parse(userI.Id),
                TicketID        = long.Parse(ticketID),
                FriendConfirmed = true
            };

            // sam sebi sam prijatelj

            _context.UserTickets.Add(userTicket);
            _context.SaveChanges();

            // sada je potrebno tu kartu postaviti da je rezervisana
            try
            {
                var findTicket = await _context.Tickets.FindAsync(int.Parse(ticketID));

                findTicket.IsTicketPurchased    = true;
                findTicket.TimeOfTicketPurchase = DateTime.Now;

                try
                {
                    _context.Tickets.Update(findTicket);
                    _context.SaveChanges();

                    // poeni se dodeljuju useru
                    //PlusPointsForUser(username, "only_flight");
                    var user = await _userManager.FindByNameAsync(username);

                    user.Points += 70;
                    var result = await _userManager.UpdateAsync(user);

                    // avikompanija povecava svoj broj prodatih karata
                    AirlineNumberOfTicketMethod(ticketID, "plus");
                    return(Ok());
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }