public async Task <BaseResult <StringIdResult> > CreateUser(RegisterModel model)
        {
            var result = new BaseResult <StringIdResult>();

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

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

                        //find user by phone number if not exist then only register
                        var filter = Builders <RegisterModel> .Filter.Eq("PhoneNumber", model.PhoneNumber);

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

                        if (user.Count == 0)
                        {
                            model.Id = Guid.NewGuid().ToString();

                            await userCollection.InsertOneAsync(model);                    result.Suceeded = true;

                            StringIdResult idResult = new StringIdResult();
                            idResult.Id  = model.Id;
                            result.Value = idResult;
                        }
                        else
                        {
                            result.Suceeded = false;
                            result.AddError("Already registered phone number");
                        }
                    }
                    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.Suceeded = false;
                result.AddError("User can't be null");
            }

            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);
        }
Esempio n. 3
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);
        }