public Task <bool> Handle(RegisterTicketCommand message, CancellationToken cancellationToken)
        {
            var ticket = new Ticket(message.Id, message.Description, message.Localization, message.TicketStatusId, message.TicketTypeId, message.DateRegister);

            if (!TicketIsValid(ticket))
            {
                return(Task.FromResult(false));
            }

            var ticketRegistred = _ticketRepository.Find(c => c.Id == ticket.Id);

            if (ticketRegistred.Any())
            {
                _mediator.PublishEvent(new DomainNotification(message.MessageType, "Já existe um ticket com esse Id"));
            }

            _ticketRepository.Add(ticket);

            if (Commit())
            {
                _mediator.PublishEvent(new TicketRegisteredEvent(ticket.Id, ticket.Description, ticket.Localization, ticket.TicketStatusId, ticket.TicketTypeId, ticket.DateRegister));
            }

            return(Task.FromResult(true));
        }
示例#2
0
        public void Listen(string json)
        {
            var ticket = ConvertToTicket(json);

            ticket.Protocol = GenerateProtocol();
            _ticketRepository.Add(ticket);
        }
        public IActionResult Create(TicketViewModel ticketViewModel)
        {
            if (ModelState.IsValid)
            {
                string    gebruikersnaam = User.Identity.Name;
                Gebruiker gebruiker      = _gebruikerRepository.GetByGebruikersnaamKlant(gebruikersnaam);
                try
                {
                    Gebruiker technieker = _gebruikerRepository.GetByGebruikersnaamTechnieker(ticketViewModel.Technieker);

                    Ticket ticket = new Ticket(ticketViewModel.Titel, ticketViewModel.Omschrijving, gebruiker);
                    MapTicketViewModelToTicket(ticketViewModel, ticket);
                    _ticketRepository.Add(ticket);
                    _ticketRepository.SaveChanges();
                    TempData["message"] = $" {ticket.Titel} is aangemaakt.";
                }
                catch
                {
                    TempData["error"] = "Er is iets misgelopen bij het aanmaken van een ticket";
                }
                return(RedirectToAction(nameof(Index)));
            }
            //ViewData["Techniekers"] = GetTechniekersAsSelectedList();
            return(View(nameof(Edit)));
        }
        public async Task <IActionResult> CreateComment(CommentForCreationDto commentForCreationDto)
        {
            // if (creator.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            //     return Unauthorized();



            var comment = _mapper.Map <Comment>(commentForCreationDto);

            comment.UserId = Int32.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier));

            var regexItem = new Regex("^[a-zA-Z0-9 ]*$");

            if (!regexItem.IsMatch(comment.Description))
            {
                throw new Exception("Description invalid");
            }

            _repo.Add(comment);


            if (await _repo.SaveAll())
            {
                var commentToReturn = _mapper.Map <CommentForReturnDto>(comment);
                //commentToReturn.UserName = comment.User.Username;
                return(CreatedAtRoute("GetComment",
                                      new { comment.TicketId, id = comment.Id }, commentToReturn));
            }


            throw new Exception("Creating the comment failed on save");
        }
示例#5
0
        public async Task <IActionResult> CreateTicket(TicketForCreationDto ticketForCreationDto)
        {
            var ticket = _mapper.Map <Ticket>(ticketForCreationDto);

            ticket.UserId = Int32.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier));

            //ticket.Description = Regex.Replace(ticket.Description, "[^0-9A-Za-z]+", " ");
            var regexItem = new Regex("^[a-zA-Z0-9 ]*$");

            if (!regexItem.IsMatch(ticket.Description))
            {
                throw new Exception("Description invalid");
            }

            _repo.Add(ticket);


            if (await _repo.SaveAll())
            {
                var ticketToReturn = _mapper.Map <TicketForListDto>(ticket);
                ticketToReturn.UserName     = User.Identity.Name;
                ticketToReturn.TicketNumber = ticket.Id;
                return(CreatedAtRoute("GetTicket",
                                      new { id = ticket.Id }, ticketToReturn));
            }


            throw new Exception("Creating the message failed on save");
        }
        public long Add(TicketAddCommand ticket)
        {
            var ticketAdd = Mapper.Map <TicketAddCommand, Ticket>(ticket);

            ticketAdd.DateBuy = DateTime.Now;

            var session = SessionRepository.GetById(ticket.SessionId);

            ticketAdd.Session = session;

            var movie = MovieRepository.GetById(ticket.MovieId);

            ticketAdd.Movie = movie;

            var user = UserRepository.GetById(ticket.UserId);

            ticketAdd.User = user;

            var snacks = SnackRepository.GetById(ticket.SnacksIds);

            ticketAdd.Snacks = snacks;

            var movieTheater = MovieTheaterRepository.GetById(ticket.MovieTheaterId);

            ticketAdd.MovieTheater = movieTheater;

            var newTicket = TicketRepository.Add(ticketAdd);

            return(newTicket.Id);
        }
示例#7
0
        public async Task <TicketDTO> Handle(CreateTicketCommand message, CancellationToken cancellationToken)
        {
            var seat = _seatingRepository.GetAsync(message.SeatId);

            if (seat == null)
            {
                throw new ArgumentNullException(nameof(seat));
            }
            if (seat.Result.IsOccupied)
            {
                throw new TicketingDomainException("Seat is already occupied");
            }

            var customer = _customerRepository.GetAsync(message.SeatId);

            if (seat == null)
            {
                throw new ArgumentNullException(nameof(seat));
            }

            var ticket = new Ticket(message.SeatId, message.CustomerId);

            Log.Information($"Creating Ticket: {ticket}");

            _ticketRepository.Add(ticket);
            await _ticketRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken);

            var result = new TicketDTO()
            {
                TicketId  = ticket.Id,
                CreatedOn = Timestamp.FromDateTime(ticket.CreatedOn)
            };

            return(await Task.FromResult(result));
        }
示例#8
0
 public Ticket Create(Ticket ticket)
 {
     if (ticket == null)
     {
         throw new Exception("The object is not valid");
     }
     return(ticketRepository.Add(ticket));
 }
示例#9
0
        public async Task <int> Add(TicketModel ticketiewmodels)
        {
            ticketiewmodels.TikEstado        = 0;
            ticketiewmodels.TikFechaRegistro = DateTime.Now;
            var addEntity = await _ticketRepository.Add(TicketMapper.Map(ticketiewmodels));

            return(addEntity);
        }
示例#10
0
        public ActionResult PurchaseTickets(string tenant, string eventId, string customerId, string ticketPrice, string ticketCount, string sectionId)
        {
            bool purchaseResult  = false;
            int  numberOfTickets = Convert.ToInt32(ticketCount);

            if (string.IsNullOrEmpty(eventId) || string.IsNullOrEmpty(customerId) || string.IsNullOrEmpty(ticketPrice) || string.IsNullOrEmpty(ticketCount))
            {
                var message = _localizer["Enter quantity"];
                DisplayMessage(message, "Confirmation");
                return(RedirectToAction("Index", "Events", new { tenant = Startup.TenantConfig.TenantName }));
            }

            var ticketPurchaseModel = new TicketPurchaseModel
            {
                CustomerId    = Convert.ToInt32(customerId),
                PurchaseTotal = Convert.ToDecimal(ticketPrice)
            };

            SetTenantConfig(tenant);

            var latestPurchaseTicketId = _iTicketPurchaseRepository.GetNumberOfTicketPurchases(_connectionString, Startup.TenantConfig.TenantId);

            ticketPurchaseModel.TicketPurchaseId = latestPurchaseTicketId + 1;

            var purchaseTicketId = _iTicketPurchaseRepository.Add(ticketPurchaseModel, _connectionString, Startup.TenantConfig.TenantId);

            var ticketModel = new TicketModel
            {
                SectionId        = Convert.ToInt32(sectionId),
                EventId          = Convert.ToInt32(eventId),
                TicketPurchaseId = purchaseTicketId
            };

            Random rnd = new Random();

            for (var i = 0; i < numberOfTickets; i++)
            {
                Random rnd2 = new Random(5000);
                ticketModel.RowNumber  = rnd.Next(0, 100000);
                ticketModel.SeatNumber = rnd2.Next(0, 100000);
                purchaseResult         = _ticketRepository.Add(ticketModel, _connectionString, Startup.TenantConfig.TenantId);
            }

            var successMessage = _localizer[$"You have successfully purchased {ticketCount} tickets."];
            var failureMessage = _localizer["Failed to purchase tickets."];

            if (purchaseResult)
            {
                DisplayMessage(successMessage, "Confirmation");
            }
            else
            {
                DisplayMessage(failureMessage, "Error");
            }

            return(RedirectToAction("Index", "Events", new { tenant = Startup.TenantConfig.TenantName }));
        }
示例#11
0
        public int PostTicket(string username, TicketPostViewModel model)
        {
            var customerId    = _customerRepository.Get(x => x.Username == username && x.Deleted == false).Id;
            var existedTicket = _ticketRepository.Get(x => x.TicketCode.ToLower().Equals(model.TicketCode.ToLower()) &&
                                                      x.TransportationId == model.TransportationId && x.TicketTypeId == model.TicketTypeId &&
                                                      x.DepartureStationId == model.DepartureStationId && x.ArrivalStationId == model.ArrivalStationId &&
                                                      DateTime.Equals(x.DepartureDateTime, model.DepartureDateTime) && DateTime.Equals(x.ArrivalDateTime, model.ArrivalDateTime));

            if (existedTicket != null && existedTicket.Status != TicketStatus.Invalid)
            {
                throw new InvalidOperationException();
            }
            var ticket = _mapper.Map <TicketPostViewModel, Ticket>(model);

            ticket.CommissionPercent = 10;
            ticket.Status            = Core.Enum.TicketStatus.Pending;
            ticket.SellerId          = customerId;
            ticket.ExpiredDateTime   = model.DepartureDateTime;

            //convert time into UTC time
            var departureStation = _stationRepository.Get(x => x.Id == ticket.DepartureStationId && x.Deleted == false);

            if (departureStation.City.TimeZoneId != null)
            {
                ticket.DepartureDateTimeUTC = ticket.DepartureDateTime.ToSpecifiedTimeZone(departureStation.City.TimeZoneId);
                if (ticket.ExpiredDateTime != null)
                {
                    ticket.ExpiredDateTimeUTC = ticket.ExpiredDateTime.Value.ToSpecifiedTimeZone(departureStation.City.TimeZoneId);
                }
            }
            else
            {
                ticket.DepartureDateTimeUTC = ticket.DepartureDateTime;
                ticket.ExpiredDateTimeUTC   = ticket.ExpiredDateTime;
            }

            var arrivalStation = _stationRepository.Get(x => x.Id == ticket.ArrivalStationId && x.Deleted == false);

            if (arrivalStation.City.TimeZoneId != null)
            {
                ticket.ArrivalDateTimeUTC = ticket.ArrivalDateTime.ToSpecifiedTimeZone(arrivalStation.City.TimeZoneId);
            }
            else
            {
                ticket.ArrivalDateTimeUTC = ticket.ArrivalDateTime;
            }

            _ticketRepository.Add(ticket);
            _unitOfWork.CommitChanges();

            //noti to staff
            List <string> adminDeviceIds = GetAdminDeviceIds();
            var           message        = "A new ticket is posted";

            _oneSignalService.PushNotificationAdmin(message, adminDeviceIds);
            return(ticket.Id);
        }
        public Task Handle(TicketScanStartedNotification notification, CancellationToken cancellationToken)
        {
            var seat = new SeatModel(notification.Seat.Number, notification.Seat.Letter);

            _ticketRepository.Add(new TicketScanModel(notification.Identifier, seat));
            _eventAggregator.Publish(new TicketScanAdded(notification.Identifier));
            _logger.LogDebug($"Published {nameof(TicketScanAdded)} event for transaction {notification.Identifier}");
            return(Task.CompletedTask);
        }
 public Ticket Create(Ticket card)
 {
     if (IsValid(card))
     {
         irepo.Add(card);
         return(card);
     }
     return(null);
 }
示例#14
0
 public TicketModel Add(TicketModel model)
 {
     using (var scope = _contextScopeFactory.Create())
     {
         var entity = _mapper.Map <Ticket> (model);
         _repository.Add(entity);
         _repository.Save();
         return(model);
     }
 }
        /// <summary>
        /// Create a ticket
        /// </summary>
        /// <param name="conversation">The conversation<see cref="Conversation"/></param>
        /// <returns>The <see cref="Ticket"/></returns>
        public async Task <Ticket> Create(Conversation conversation)
        {
            var ticket = new Ticket();

            ticket.AddConversation(conversation);

            var response = await _ticketRepository.Add(ticket);

            return(response);
        }
示例#16
0
        public async Task Execute(IUserContext userContext, CreateTicket command)
        {
            EnforceUserContext(userContext);

            var ticketId = Guid.NewGuid();

            await _ticketRepository.Add(new Ticket(ticketId, command.Title, command.Description));

            await _handler.Handle(new TicketCreated(ticketId));
        }
示例#17
0
 public IActionResult Create([Bind("Id,DateOpened,DateClosed,Description,ResolutionType")] Ticket ticket)
 {
     if (ModelState.IsValid)
     {
         _repo.Add(ticket);
         _unitOfWork.Complete();
         return(RedirectToAction(nameof(Index)));
     }
     return(View(ticket));
 }
示例#18
0
        public void Handle(CreateTicketCommand message)
        {
            User     requestor  = _userRepository.GetByLoginName(message.RequestorLoginName);
            User     assignedTo = _userRepository.GetByLoginName(message.AssignedToLoginName);
            Category category   = _categoryRepository.GetByName(message.Category);

            var ticket = new Ticket(message.Title, message.Description, (TicketStatus)message.Status, (TicketPriority)message.Priority, (TicketType)message.Type,
                                    message.DueDate, message.ResolutionComments, requestor, assignedTo, category);

            _ticketRepository.Add(ticket);
        }
示例#19
0
        public Task <AddTicketCommandResponse> Handle(AddTicketCommandRequest request, CancellationToken cancellationToken, RequestHandlerDelegate <AddTicketCommandResponse> next)
        {
            var ticket = new Ticket(request.Description, request.Title, CodeGenerator.CreateCode());

            _ticketRepository.Add(ticket);
            var ticketResponse = new TicketResponse
            {
                TrackingCode = ticket.TrackingCode
            };

            return(Task.FromResult(new AddTicketCommandResponse(true, ResultCode.Success, ticketResponse)));
        }
        public void Create(string title, string message, string userId)
        {
            var newTicket = new Ticket()
            {
                Title       = title,
                Message     = message,
                ClientId    = userId,
                DateCreated = DateTime.Now,
            };

            ticketRepository.Add(newTicket);
        }
示例#21
0
        public void AddTestTicket()
        {
            if (_ticketRepo.GetAll().Count() > 0)
            {
                return;
            }
            var john        = _userManager.FindByNameAsync("*****@*****.**").Result;
            var jane        = _userManager.FindByNameAsync("*****@*****.**").Result;
            var johnTicket1 = CreateTestTicket(1, 3, "A4", "3:30", 1, 1, john);

            _ticketRepo.Add(johnTicket1);
        }
示例#22
0
 public IActionResult Add(TicketViewModel model)
 {
     if (ModelState.IsValid)
     {
         _repository.Add(model.CurrentTicket);
         _repository.SaveChanges();
         return(RedirectToAction("Tickets"));
     }
     else
     {
         model.Statuses = _repository.GetStatuses();
         return(View(model));
     }
 }
示例#23
0
        public bool SaveTicket(Ticket ticketType)
        {
            if (ticketType.TicketId > 0)
            {
                ticketRepository.Update(ticketType);
            }
            else
            {
                ticketRepository.Add(ticketType);
            }

            ticketRepository.SaveChanges();
            return(true);
        }
示例#24
0
        Execute(IUserContext userContext, CreateTicket command)
        {
            if (!userContext.HasPermission(Permission.Edit))
            {
                return(false, $"Does not have role {Permission.Edit}");
            }

            var ticketId = Guid.NewGuid();

            await _ticketRepository.Add(new Ticket(ticketId, command.Title, command.Description));

            await _handler.Handle(new TicketCreated(ticketId));

            return(true, string.Empty);
        }
示例#25
0
        public MethodResult <Ticket> AddTicket(string description, int assetId)
        {
            var newTicket = new Ticket
            {
                Description  = description,
                DateOpen     = DateTime.Now,
                TicketStatus = TicketStatus.Open,
                DateClosed   = null,
                AssetId      = assetId
            };

            _ticketRepository.Add(newTicket);

            return(new MethodResult <Ticket>(newTicket));
        }
示例#26
0
        /// <summary>
        ///     Добавляет билет
        /// </summary>
        /// <param name="ticket">Модель билета</param>
        /// <returns>Код ответа Create и добавленную модель</returns>
        public async Task <string> Add(Ticket ticket)
        {
            var validationResultTicket = await _validatorTickets.ValidateAsync(ticket);

            var validationResultUser = await _validatorUsers.ValidateAsync(ticket.User);

            if (!validationResultTicket.IsValid | !validationResultUser.IsValid)
            {
                var errors = validationResultTicket.Errors.ToList();
                errors.AddRange(validationResultUser.Errors.ToArray());
                throw new ValidationException("Validation failed",
                                              errors);
            }

            var res = await _context.Add(_mapper.Map <Data.DbModels.Ticket>(ticket));

            try
            {
                await _policy.ExecuteAsync(async() =>
                {
                    await _bus.PublishAsync(new TicketCreationMessage
                    {
                        TicketId = res,
                        Price    = ticket.Price,
                        Name     = ticket.Name,
                        City     = ticket.LocationEvent.City,
                        Category = ticket.TypeEvent,
                        Date     = DateTime.Now
                    });
                    await _bus.PublishAsync(new TicketActionLogMessage
                    {
                        TicketId   = res,
                        UserId     = ticket.User.UserInfoId,
                        ActionType = TicketAction.Add,
                        EventDate  = DateTime.Now
                    });
                });
            }
            catch (TimeoutException exception)
            {
                throw new EasyNetQSendException("Ticket added in db, but error sending message to RabbitMQ",
                                                exception,
                                                res);
            }

            return(res);
        }
示例#27
0
        public IActionResult OnPost(Ticket SingleTicket)
        {
            if (ModelState.IsValid)
            {
                if (SingleTicket.ID > 0)
                {
                    SingleTicket = ticketRepository.Update(SingleTicket);
                }
                else
                {
                    SingleTicket = ticketRepository.Add(SingleTicket);
                }
                return(RedirectToPage("Index"));
            }

            return(Page());
        }
示例#28
0
        public void canAdd()
        {
            List <Ticket> testTickets;
            Ticket        ticketNuevo = new Ticket()
            {
                TipoSolicitudId   = 109,
                Observacion       = "Test2",
                FechaCreacion     = DateTime.Now,
                UsuarioCreacionId = 1
            };

            TicketRepository.Add(ticketNuevo);
            TicketRepository.Save();
            testTickets = (List <Ticket>) this.TicketRepository.GetAll();
            testTickets.Add(ticketNuevo);

            Assert.AreEqual(2, testTickets.Count);
        }
        public async Task <bool> Handle(CreateTicket request, CancellationToken cancellationToken)
        {
            Ticket tickets = new Ticket(
                Title.FromString(request.Title),
                request.Description,
                request.UserSenderId,
                request.UserResiveId
                );


            _ticketRepository.Add(tickets);
            int result = _unitOfWork.Commit();

            foreach (var @event in tickets.GetEvents())
            {
                await _eventBus.Publish(@event);
            }
            return(true);
        }
示例#30
0
        public async Task <IActionResult> CreateTicket([FromBody] TicketResource ticketResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var ticket = mapper.Map <TicketResource, Ticket>(ticketResource);

            ticket.CreationDate = DateTime.Now;

            repository.Add(ticket);
            await unitOfWork.CompleteAsync();

            ticket = await repository.Get(ticket.Id);

            var result = mapper.Map <Ticket, TicketResource>(ticket);

            return(Ok(result));
        }
示例#31
0
 private Booking AddNewBooking(Booking booking, ITicketRepository ticketRepository)
 {
     try
     {
         var ticketResult = ticketRepository.Add(booking);
         return ticketResult;
     }
     catch (NullReferenceException ex)
     {
         System.Console.WriteLine("Processor Usage" + ex.Message);
     }
     return null;
 }