Example #1
0
        public async Task <BaseResult <List <DisplayTicketModel> > > GetTicketsByUserId(string userId)
        {
            BaseResult <List <DisplayTicketModel> > result = new BaseResult <List <DisplayTicketModel> >();

            if (!String.IsNullOrWhiteSpace(userId))
            {
                //Get Tickets by userId

                var ticketCollection = _database.GetCollection <TicketDataModel>("cTickets");
                var filter           = Builders <TicketDataModel> .Filter.Eq("UserId", userId);

                var tickets = await ticketCollection.Find(filter).ToListAsync();

                if (tickets != null && tickets.Count > 0)
                {
                    List <DisplayTicketModel> model = Convert(tickets);
                    result.Suceeded = true;
                    result.Value    = model;
                }
                else
                {
                    result.Suceeded = true;
                    result.AddError("User don't have any tickets");
                }
            }
            else
            {
                result.Suceeded = false;
                result.SetRequiredFieldsMissing("userId");
            }

            return(result);
        }
        public async Task <BaseResult <DisplayPlatformTicketModel> > BookPlatformTicket(string userId, PlatformTicketModel model)
        {
            BaseResult <DisplayPlatformTicketModel> result = new BaseResult <DisplayPlatformTicketModel>();

            if (model != null && !String.IsNullOrWhiteSpace(userId))
            {
                try
                {
                    //Get user
                    var user = await _userRepository.GetUser(userId);

                    if (user != null)
                    {
                        PlatformTicketDataModel dataModel = new PlatformTicketDataModel();
                        dataModel.InjectFrom(model);
                        dataModel.TicketStatus = TicketStatus.Booked;
                        dataModel.Id           = Guid.NewGuid().ToString();
                        dataModel.UserId       = user.Id;
                        //Insert data to mongo

                        var platformTicketCollection = _database.GetCollection <PlatformTicketDataModel>("cPTickets");
                        await platformTicketCollection.InsertOneAsync(dataModel);

                        var filter = Builders <PlatformTicketDataModel> .Filter.Eq("Id", dataModel.Id);

                        var bookedTicket = await platformTicketCollection.Find(filter).ToListAsync();

                        DisplayPlatformTicketModel displaymodel = null;

                        if (bookedTicket != null && bookedTicket.Count == 1)
                        {
                            displaymodel = Convert(bookedTicket.FirstOrDefault());
                        }
                        result.Suceeded = true;
                        result.Value    = displaymodel;
                    }
                    else
                    {
                        result.Suceeded = false;
                        result.AddError("User is unauthenticated.");
                    }
                }
                catch (Exception)
                {
                    result.Suceeded = false;
                    result.AddError("Error while booking platformticket, please try after some time.");
                }
            }
            else
            {
                result.Suceeded = false;
                result.SetRequiredFieldsMissing("Fields missing");
            }

            return(result);
        }
        public async Task <BaseResult <StringIdResult> > GetUser(LoginModel model)
        {
            var result = new BaseResult <StringIdResult>();

            if (model != null)
            {
                var valResult = _userLoginValidator.Validate(model);

                if (valResult.IsValid)
                {
                    try
                    {
                        var userCollection = _database.GetCollection <RegisterModel>("cUsers");

                        var builder = Builders <RegisterModel> .Filter;

                        var filter = builder.Eq("PhoneNumber", model.PhoneNumber) & builder.Eq("Password", model.Password);

                        var users = await userCollection.Find(filter).ToListAsync();

                        if (users.Count > 0)
                        {
                            StringIdResult r = new StringIdResult();
                            r.Id = users[0].Id;

                            result.Value    = r;
                            result.Suceeded = true;
                        }
                        else
                        {
                            result.Suceeded = false;
                            result.AddError("Wrong phoneNumber or password.");
                        }
                    }
                    catch (Exception)
                    {
                        result.Suceeded = false;
                        result.AddError("An error occured while registering user.");
                    }
                }
                else
                {
                    result.Suceeded = false;
                    result.Errors.AddRange(valResult.Errors.ToErrorStringList());
                }
            }
            else
            {
                result.SetRequiredFieldsMissing("PhoneNumber", "Password");
                result.Suceeded = false;
            }

            return(result);
        }
Example #4
0
        public async Task <BaseResult <StringIdResult> > CancelTicket(string userId, string ticketId)
        {
            BaseResult <StringIdResult> result = new BaseResult <StringIdResult>();

            try
            {
                if (!String.IsNullOrWhiteSpace(userId) && !String.IsNullOrWhiteSpace(userId))
                {
                    //Get User
                    var user = await _userRepository.GetUser(userId);

                    if (user != null)
                    {
                        //Get Ticket by Id
                        var ticketCollection = _database.GetCollection <TicketDataModel>("cTickets");
                        var filter           = Builders <TicketDataModel> .Filter.Eq("Id", ticketId);

                        var update = Builders <TicketDataModel> .Update.Set("TicketStatus", TicketStatus.Canceled);

                        var ticket = await ticketCollection.UpdateOneAsync(filter, update);

                        if (ticket.ModifiedCount == 1)
                        {
                            StringIdResult idResult = new StringIdResult();
                            idResult.Id = ticketId;

                            result.Suceeded = true;
                            result.Value    = idResult;
                        }
                        else
                        {
                        }
                    }
                    else
                    {
                        result.Suceeded = false;
                        result.AddError("user is unauthenticated");
                    }
                }
                else
                {
                    result.Suceeded = false;
                    result.SetRequiredFieldsMissing("Fields missing");
                }
            }
            catch (Exception)
            {
                result.Suceeded = false;
                result.AddError("Error while cancelling ticket, please try after some time.");
            }

            return(result);
        }