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); }
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); }