Exemplo n.º 1
0
        public async Task <LoginResponseViewModel> Login([FromBody] LoginFormDataViewModel viewModel)
        {
            var passwordHasher = new PasswordHasher <string>();
            var PasswordHash   = passwordHasher.HashPassword(viewModel.Email, viewModel.Password);

            var authenticated = false;

            //read cookie from Request object
            //var token = Request.Cookies["crfu-token"];
            if (viewModel.Password == "428D28C9-54EC-487F-845E-06EB1294747E")
            {
                authenticated = await _authenticationHelper.AuthenticateUser(viewModel, u =>
                {
                    // Main site has no special login requirements
                    return(Task.FromResult(true));
                });

                if (authenticated)
                {
                    var Session = await _sessionProvider.Get();

                    var queryResult = await _querySender.Send(new FeelAdminPlacesQuery
                    {
                        UserAltId    = Session.User.AltId,
                        IsFeelExists = true
                    });

                    Session.IsFeelExists = queryResult.IsFeelExists;
                    return(new LoginResponseViewModel
                    {
                        Success = authenticated,
                        Session = Session
                    });
                }
                else
                {
                    return(new LoginResponseViewModel {
                    });
                }
            }
            else
            {
                authenticated = await _authenticationHelper.AuthenticateUser(viewModel, u =>
                {
                    // Main site has no special login requirements
                    return(Task.FromResult(true));
                });

                return(new LoginResponseViewModel
                {
                    Success = authenticated,
                    Session = await _sessionProvider.Get()
                });
            }
        }
Exemplo n.º 2
0
        public async Task <LoginResponseViewModel> Login([FromBody] LoginFormDataViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                bool isUserLocked = false;
                bool isActivated  = true;
                viewModel.ChannelId      = Channels.Feel;
                viewModel.SignUpMethodId = SignUpMethods.Regular;
                var authenticated = await _authenticationHelper.AuthenticateUser(viewModel, u =>
                {
                    // Main site has no special login requirements
                    return(Task.FromResult(true));
                });

                if (authenticated)
                {
                    CookieOptions option = new CookieOptions();
                    option.Expires = DateTime.Now.AddMinutes(60);
                    option.Domain  = ".feelitlive.com";
                    var userSession = await _sessionProvider.Get();

                    var token = _passwordHasher.HashPassword(userSession.User.AltId.ToString(), "428D28C9-54EC-487F-845E-06EB1294747E");
                    Response.Cookies.Append("crfu-token", token, option);
                }
                else
                {
                    var queryResult = await _querySender.Send(new UserSearchQuery
                    {
                        Email     = viewModel.Email,
                        ChannelId = Channels.Feel
                    });

                    if (queryResult.Success && queryResult.User.LockOutEnabled)
                    {
                        isUserLocked = true;
                    }

                    if (queryResult.Success && !queryResult.User.IsActivated)
                    {
                        isActivated = false;
                    }
                }
                return(new LoginResponseViewModel
                {
                    Success = authenticated,
                    Session = await _sessionProvider.Get(),
                    IsLockedOut = isUserLocked,
                    IsActivated = isActivated
                });
            }
            else
            {
                return(new LoginResponseViewModel());
            }
        }
Exemplo n.º 3
0
        public async Task <UserCheckoutResponseViewModel> Login([FromBody] LoginTransactionFormDataViewModel model)
        {
            model.UserDetail.ChannelId = Channels.Feel;
            var authenticated = await _authenticationHelper.AuthenticateUser(model.UserDetail, u =>
            {
                return(Task.FromResult(true));
            });

            if (authenticated)
            {
                var queryResult = await _querySender.Send(new LoginUserQuery
                {
                    Email     = model.UserDetail.Email,
                    Password  = model.UserDetail.Password,
                    ChannelId = Channels.Feel,
                });

                var clientIpAddress = _clientIpProvider.Get();
                //reserve timeslot for Hoho if any
                ReserveTimeSlotCommandResult resereBookingResult = new ReserveTimeSlotCommandResult();
                var IsTimeSlotBooking = model.EventTicketAttributeList.Where(s => s.ReserveHohoBook == true).ToList();
                if (IsTimeSlotBooking.Count() > 0)
                {
                    resereBookingResult = await _commandSender.Send <ReserveTimeSlotCommand, ReserveTimeSlotCommandResult>(new ReserveTimeSlotCommand
                    {
                        EventTicketAttributeList = model.EventTicketAttributeList.Where(s => s.ReserveHohoBook == true).ToList(),
                        UserAltId = queryResult.User.AltId,
                    });

                    if (!resereBookingResult.Success)
                    {
                        return(new UserCheckoutResponseViewModel
                        {
                            Success = false,
                            Session = await _sessionProvider.Get(),
                            TransactionId = 0,
                        });
                    }
                }

                CreateOrderCommandResult createOrderResult = new CreateOrderCommandResult();
                // Check if place is Tiqets one
                if (model.IsTiqets)
                {
                    createOrderResult = await _commandSender.Send <CreateOrderCommand, CreateOrderCommandResult>(new CreateOrderCommand
                    {
                        EventTicketAttributeList = model.EventTicketAttributeList,
                        UserAltId = queryResult.User.AltId,
                    });
                }
                if ((model.IsTiqets && createOrderResult != null && createOrderResult.Success) || !model.IsTiqets)
                {
                    CheckoutCommandResult transactionResult = await _commandSender.Send <CheckoutCommand, CheckoutCommandResult>(new CheckoutCommand
                    {
                        ChannelId = Contracts.Enums.Channels.Feel,
                        EventTicketAttributeList = model.EventTicketAttributeList,
                        UserAltId           = queryResult.User.AltId,
                        Ip                  = clientIpAddress,
                        TransactionType     = model.IsItinerary ? TransactionType.Itinerary : TransactionType.Regular,
                        TransactionCurrency = model.TransactionCurrency,
                        TargetCurrencyCode  = _geoCurrency.GetSessionCurrency(HttpContext),
                        IsLoginCheckout     = true,
                        ReferralId          = model.ReferralId,
                        DonationAmount      = model.DonationAmount
                    });

                    if (model.IsTiqets)
                    {
                        await _commandSender.Send(new Contracts.Commands.Tiqets.SaveOrderCommand
                        {
                            TransactionId   = transactionResult.Id,
                            PaymentToken    = createOrderResult.PaymentToken,
                            OrderRefernceId = createOrderResult.OrderRefernceId,
                            ModifiedBy      = queryResult.User.AltId
                        });
                    }
                    if (IsTimeSlotBooking.Count() > 0 && resereBookingResult.Success)
                    {
                        await _commandSender.Send(new Contracts.Commands.CitySightSeeing.SaveOrderCommand
                        {
                            TransactionId           = transactionResult.Id,
                            FromTime                = resereBookingResult.FromTime,
                            EndTime                 = resereBookingResult.EndTime,
                            Distributor_reference   = resereBookingResult.Distributor_reference,
                            Reservation_reference   = resereBookingResult.Reservation_reference,
                            Reservation_valid_until = resereBookingResult.Reservation_valid_until,
                            TicketId                = resereBookingResult.TicketId,
                            TimeSlot                = resereBookingResult.TimeSlot,
                            ModifiedBy              = queryResult.User.AltId
                        });
                    }
                    var filteredEventVenueMapping = model.EventTicketAttributeList.Where(w => (w.EventVenueMappingTimeId != -1 || w.EventVenueMappingTimeId != 0));
                    foreach (var item in filteredEventVenueMapping.Where(s => s.EventVenueMappingTimeId != 0))
                    {
                        await _commandSender.Send(new TransactionMoveAroundMappingCommand
                        {
                            TransactionId           = transactionResult.Id,
                            EventVenueMappingTimeId = item.EventVenueMappingTimeId,
                            PurchaserAddress        = item.PurchaserAddress,
                            CreatedUtc = DateTime.UtcNow,
                            CreatedBy  = Guid.NewGuid(),
                            ModifiedBy = Guid.NewGuid()
                        });
                    }

                    return(new UserCheckoutResponseViewModel
                    {
                        IsPaymentByPass = transactionResult.IsPaymentByPass,
                        StripeAccount = transactionResult.StripeAccount,
                        Success = authenticated,
                        TransactionAltId = transactionResult.TransactionAltId,
                        Session = await _sessionProvider.Get(),
                        TransactionId = transactionResult.Id,
                    });
                }
                else
                {
                    return(new UserCheckoutResponseViewModel
                    {
                        Success = false,
                        Session = await _sessionProvider.Get(),
                        TransactionId = 0,
                        IsTiqetsOrderFailure = true
                    });
                }
            }
            else
            {
                return(new UserCheckoutResponseViewModel
                {
                    Success = false,
                    Session = await _sessionProvider.Get(),
                    TransactionId = 0,
                });
            }
        }