示例#1
0
文件: Driver.cs 项目: ut786/ZATAppApi
 /// <summary>
 /// Constructor to add new Driver to the database
 /// </summary>
 /// <param name="name">Full Name of the driver</param>
 /// <param name="contactNumber">Contact Number of the driver</param>
 /// <param name="creditLimit">Credit Limit to which the driver can use the app, after that the acount will be blocked</param>
 /// <param name="lastLocation">Last known location of the driver</param>
 /// <param name="cnic">Unique National ID Card Number</param>
 public Driver(NameFormat name, ContactNumberFormat contactNumber, decimal creditLimit, Location lastLocation, string cnic) : base(name, contactNumber)
 {
     dbCommand             = new SqlCommand("AddNewDriver", dbConnection);
     dbCommand.CommandType = System.Data.CommandType.StoredProcedure;
     dbCommand.Parameters.Add(new SqlParameter("@id", System.Data.SqlDbType.BigInt)).Value          = id;
     dbCommand.Parameters.Add(new SqlParameter("@creditLimit", System.Data.SqlDbType.Money)).Value  = creditLimit;
     dbCommand.Parameters.Add(new SqlParameter("@lLongitude", System.Data.SqlDbType.Decimal)).Value = lastLocation.Longitude;
     dbCommand.Parameters.Add(new SqlParameter("@lLatitude", System.Data.SqlDbType.Decimal)).Value  = lastLocation.Latitude;
     dbCommand.Parameters.Add(new SqlParameter("@cnic", System.Data.SqlDbType.NChar)).Value         = cnic;
     dbConnection.Open();
     try
     {
         dbCommand.ExecuteNonQuery();
     }
     catch (SqlException ex)
     {
         dbConnection.Close();
         if (ex.Number == 2601 || ex.Number == 2627)
         {
             DeleteUser(id);
             //Unique key handler
             throw new UniqueKeyViolationException("Cannot add duplicate CNIC Number to the record.");
         }
         throw new DbQueryProcessingFailedException("Driver->Constructor(NameFormat, ContactNumberFormat, decimal, Location, string)", ex);
     }
     dbConnection.Close();
     this.creditLimit  = creditLimit;
     this.lastLocation = lastLocation;
 }
示例#2
0
 /// <summary>
 /// Constructor to initialize values of a user from the database
 /// </summary>
 /// <param name="id">Primary key</param>
 public User(long id)
 {
     dbCommand             = new SqlCommand("GetUser", dbConnection);
     dbCommand.CommandType = System.Data.CommandType.StoredProcedure;
     dbCommand.Parameters.Add(new SqlParameter("@uId", System.Data.SqlDbType.BigInt)).Value = id;
     dbConnection.Open();
     try
     {
         using (dbReader = dbCommand.ExecuteReader())
         {
             while (dbReader.Read())
             {
                 this.id = id;
                 name    = new NameFormat
                 {
                     FirstName = (string)dbReader[1],
                     LastName  = (string)dbReader[2]
                 };
                 contactNumber = new ContactNumberFormat((string)dbReader[3], (string)dbReader[4], (string)dbReader[5]);
                 isBlocked     = (bool)dbReader[6];
             }
         }
     }
     catch (SqlException ex)
     {
         dbConnection.Close();
         throw new DbQueryProcessingFailedException("User->Constructor(long)", ex);
     }
     dbConnection.Close();
 }
示例#3
0
 /// <summary>
 /// Constructor to add new user data tuple to the database
 /// </summary>
 /// <param name="name">Full Name of the user</param>
 /// <param name="contactNumber">Contact Number of the user</param>
 protected User(NameFormat name, ContactNumberFormat contactNumber)
 {
     dbCommand             = new SqlCommand("AddNewUser", dbConnection);
     dbCommand.CommandType = System.Data.CommandType.StoredProcedure;
     dbCommand.Parameters.Add(new SqlParameter("@fName", System.Data.SqlDbType.VarChar)).Value       = name.FirstName;
     dbCommand.Parameters.Add(new SqlParameter("@lName", System.Data.SqlDbType.VarChar)).Value       = name.LastName;
     dbCommand.Parameters.Add(new SqlParameter("@cCode", System.Data.SqlDbType.VarChar)).Value       = contactNumber.CountryCode;
     dbCommand.Parameters.Add(new SqlParameter("@comCode", System.Data.SqlDbType.VarChar)).Value     = contactNumber.CompanyCode;
     dbCommand.Parameters.Add(new SqlParameter("@phoneNumber", System.Data.SqlDbType.VarChar)).Value = contactNumber.PhoneNumber;
     dbConnection.Open();
     try
     {
         var result = dbCommand.ExecuteScalar();
         id = Convert.ToInt64(result);
     }
     catch (SqlException ex)
     {
         dbConnection.Close();
         if (ex.Number == 2601 || ex.Number == 2627)
         {
             //Unique key handler
             //returns the already created driver in the System
             var user = GetUser(contactNumber);
             id            = user.UserId;
             name          = user.FullName;
             contactNumber = user.ContactNumber;
             return;
         }
         throw new DbQueryProcessingFailedException("User->Constructor(NameFormat,ContactNumberFormat)", ex);
     }
     dbConnection.Close();
     this.name          = name;
     this.contactNumber = contactNumber;
 }
示例#4
0
 /// <summary>
 /// constructor which adds a new sub-admin to the database
 /// </summary>
 /// <param name="name">Full Name of the sub-admin</param>
 /// <param name="contactNumber">Contact Number of the sub-admin</param>
 public SubAdmin(NameFormat name, ContactNumberFormat contactNumber) : base(name, contactNumber)
 {
     dbCommand = new SqlCommand("INSERT INTO [SUB_ADMINS] ([UId]) VALUES (" + id + ")", dbConnection);
     dbConnection.Open();
     try
     {
         dbCommand.ExecuteNonQuery();
     }
     catch (SqlException ex)
     {
         dbConnection.Close();
         throw new DbQueryProcessingFailedException("SubAdmin->Constructor(NameFormat, ContactNumberFormat)", ex);
     }
     dbConnection.Close();
 }
示例#5
0
 /// <summary>
 /// constructor which adds a new rider to the database
 /// </summary>
 /// <param name="name">Full Name of the Rider</param>
 /// <param name="contactNumber">Contact Number of the Rider</param>
 public Rider(NameFormat name, ContactNumberFormat contactNumber) : base(name, contactNumber)
 {
     dbCommand = new SqlCommand("INSERT INTO [RIDERS] ([UId]) VALUES (" + id + ")", dbConnection);
     dbConnection.Open();
     try
     {
         dbCommand.ExecuteNonQuery();
     }
     catch (SqlException ex)
     {
         dbConnection.Close();
         if (ex.Number == 2601 || ex.Number == 2627)
         {
             return;
         }
         throw new DbQueryProcessingFailedException("Rider->Constructor(NameFormat, ContactNumberFormat)", ex);
     }
     dbConnection.Close();
 }
示例#6
0
        /// <summary>
        /// Method to get user by unique phone number
        /// </summary>
        /// <param name="contactNumber"></param>
        /// <returns></returns>
        public static User GetUser(ContactNumberFormat contactNumber)
        {
            User          user;
            SqlConnection dbConnection = new SqlConnection(CONNECTION_STRING);
            SqlCommand    dbCommand    = new SqlCommand("SELECT UId FROM USERS WHERE CountryCode = '" + contactNumber.CountryCode + "' AND CompanyCode = '" + contactNumber.CompanyCode + "' AND PhoneNumber = '" + contactNumber.PhoneNumber + "'", dbConnection);

            dbConnection.Open();
            try
            {
                user = new User(Convert.ToInt64(dbCommand.ExecuteScalar()));
            }
            catch (SqlException ex)
            {
                dbConnection.Close();
                throw new DbQueryProcessingFailedException("User->GetUser", ex);
            }
            dbConnection.Close();
            return(user);
        }
示例#7
0
        public ActionResult <User> GetByContactNumber(string countryCode, string companyCode, string phone)
        {
            ContactNumberFormat contactNumber = new ContactNumberFormat(countryCode, companyCode, phone);

            try
            {
                User user = null;
                using (var scope = container.BeginLifetimeScope())
                {
                    using (var userRepository = scope.Resolve <IUserRepository>())
                    {
                        user = userRepository.GetUser(new ContactNumberFormat(contactNumber.CountryCode, contactNumber.CompanyCode, contactNumber.PhoneNumber));
                    }
                }
                return(user);
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
示例#8
0
        /// <summary>
        /// Adds a new user data to the database
        /// </summary>
        /// <param name="fullName"></param>
        /// <param name="phoneNumber"></param>
        /// <param name="city"></param>
        protected User(NameFormat fullName, ContactNumberFormat phoneNumber, string city)
        {
            SqlParameter firstName = new SqlParameter("@fName", System.Data.SqlDbType.VarChar)
            {
                Value = fullName.FirstName
            };
            SqlParameter lastName = new SqlParameter("@lName", System.Data.SqlDbType.VarChar)
            {
                Value = fullName.LastName
            };
            SqlParameter phone = new SqlParameter("@pNumber", System.Data.SqlDbType.VarChar)
            {
                Value = phoneNumber
            };

            try
            {
                ExecuteQuery("AddNewUser", SQLCommandTypes.StoredProcedure, firstName, lastName, phone);
            }
            catch (SqlException ex)
            {
            }
        }
示例#9
0
 /// <summary>
 /// Returns a user, searched by its phone number
 /// </summary>
 /// <param name="phoneNumber"></param>
 /// <returns></returns>
 public static User GetUser(ContactNumberFormat phoneNumber)
 {
     return(null);
 }
示例#10
0
 /// <summary>
 /// Adds a new Franchise Manager record into the database
 /// </summary>
 /// <param name="fullName"></param>
 /// <param name="phoneNumber"></param>
 /// <param name="city"></param>
 /// <param name="location"></param>
 public FranchiseManager(NameFormat fullName, ContactNumberFormat phoneNumber, string city, Location location) : base(fullName, phoneNumber, city)
 {
 }
示例#11
0
 public PrimaryUser(NameFormat name, ContactNumberFormat phoneNumber, string city, string cnic) : base(name, phoneNumber, city)
 {
     this.cnic = cnic;
 }