예제 #1
0
        public RequestBidsModel ViewBid(int requestID, UsersModel user)
        {
            UsersModel       userRepo = new UsersModel();
            RequestBidsModel bid      = new RequestBidsModel();

            using (var db = new angelhackEntities())
            {
                userRepo.CheckUserIfExist(db, user);

                var result = db.requestbids.Where(x => x.IsAwarded == false &&
                                                  (x.request.UserID == user.ID || x.UserID == user.ID) &&
                                                  x.RequestID == requestID
                                                  &&
                                                  (
                                                      x.request.StatusID != (int)RequestStatus.CANCELLED &&
                                                      x.request.StatusID != (int)RequestStatus.SERVED &&
                                                      x.request.StatusID != (int)RequestStatus.CLOSED
                                                  )

                                                  ).FirstOrDefault();

                bid = mapper.Map <requestbid, RequestBidsModel>(result);
            }


            return(bid);
        }
예제 #2
0
        public List <RequestBidsModel> GetBidsByMe(UsersModel user)
        {
            UsersModel userRepo = new UsersModel();
            List <RequestBidsModel> notifications = new List <RequestBidsModel>();

            using (var db = new angelhackEntities())
            {
                userRepo.CheckUserIfExist(db, user);
                userRepo.IsUserServiceProvider(db, user);


                var result = db.requestbids.Where(x => x.IsAwarded == false &&
                                                  x.UserID == user.ID
                                                  &&
                                                  (
                                                      x.request.StatusID != (int)RequestStatus.CANCELLED &&
                                                      x.request.StatusID != (int)RequestStatus.SERVED &&
                                                      x.request.StatusID != (int)RequestStatus.CLOSED
                                                  )

                                                  ).ToList();

                notifications = mapper.Map <List <requestbid>, List <RequestBidsModel> >(result);
            }


            return(notifications);
        }
예제 #3
0
        public void SendToNotifications(RequestModel notification, UsersModel user)
        {
            var        db       = new angelhackEntities();
            UsersModel userRepo = new UsersModel();

            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    userRepo.CheckUserIfExist(db, user);
                    userRepo.IsUserServiceProvider(db, user);


                    var newNotification = new requestnotification();
                    newNotification.DateLastUpdated = DateTime.Now;
                    newNotification.DateReceived    = DateTime.Now;
                    newNotification.IsAccepted      = false;
                    newNotification.RequestID       = notification.ID;
                    newNotification.RequestorID     = notification.UserID;
                    newNotification.UserID          = user.ID;
                    newNotification.IsAccepted      = false;
                    newNotification.IsDeclined      = false;

                    db.requestnotifications.Add(newNotification);


                    db.SaveChanges();
                    transaction.Commit();
                }
                catch (System.Data.Entity.Infrastructure.DbUpdateException dbU)
                {
                    transaction.Rollback();
                    Exception ex = dbU.GetBaseException();
                    throw new Exception(ex.Message);
                }
                catch (DbEntityValidationException dbEx)
                {
                    transaction.Rollback();
                    string errorMessages = null;

                    foreach (DbEntityValidationResult validationResult in dbEx.EntityValidationErrors)
                    {
                        string entityName = validationResult.Entry.Entity.GetType().Name;
                        foreach (DbValidationError error in validationResult.ValidationErrors)
                        {
                            errorMessages += (entityName + "." + error.PropertyName + ": " + error.ErrorMessage);
                        }
                    }

                    throw new Exception(errorMessages);
                }

                finally
                {
                    db.Database.Connection.Close();
                }
            }
        }
예제 #4
0
        public RequestBidsModel PlaceBid(RequestBidsModel bid, UsersModel user)
        {
            var        db       = new angelhackEntities();
            UsersModel userRepo = new UsersModel();

            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    userRepo.CheckUserIfExist(db, user);
                    userRepo.IsUserServiceProvider(db, user);

                    var newBid = new requestbid();
                    newBid.IsAwarded   = false;
                    newBid.Price       = bid.Price;
                    newBid.RequestID   = bid.RequestID;
                    newBid.ShopAddress = bid.ShopAddress;
                    newBid.ShopName    = bid.ShopName;
                    newBid.UserID      = user.ID;
                    newBid.BidDate     = DateTime.Now;
                    db.requestbids.Add(newBid);

                    db.SaveChanges();
                    transaction.Commit();


                    var getBid = db.requestbids.Where(x => x.ID == newBid.ID).FirstOrDefault();

                    return(mapper.Map <requestbid, RequestBidsModel>(getBid));
                }
                catch (System.Data.Entity.Infrastructure.DbUpdateException dbU)
                {
                    transaction.Rollback();
                    Exception ex = dbU.GetBaseException();
                    throw new Exception(ex.Message);
                }
                catch (DbEntityValidationException dbEx)
                {
                    transaction.Rollback();
                    string errorMessages = null;
                    foreach (DbEntityValidationResult validationResult in dbEx.EntityValidationErrors)
                    {
                        string entityName = validationResult.Entry.Entity.GetType().Name;
                        foreach (DbValidationError error in validationResult.ValidationErrors)
                        {
                            errorMessages += (entityName + "." + error.PropertyName + ": " + error.ErrorMessage);
                        }
                    }
                    throw new Exception(errorMessages);
                }
                finally
                {
                    db.Database.Connection.Close();
                }
            }
        }
예제 #5
0
        public Boolean IsUserServiceProvider(angelhackEntities db, UsersModel user)
        {
            var chkUser = db.users.Where(x => x.ID == user.ID && x.IsActive == true && x.UserTypeID == (int)UserType.PROVIDER).FirstOrDefault();

            if (chkUser == null)
            {
                throw new Exception("Provider does not exist!");
            }

            return(true);
        }
예제 #6
0
        public Boolean CheckUserIfExist(angelhackEntities db, UsersModel user)
        {
            var chkUser = db.users.Where(x => x.ID == user.ID && x.IsActive == true).FirstOrDefault();

            if (chkUser == null)
            {
                throw new Exception("User does not exist!");
            }

            return(true);
        }
예제 #7
0
        public void AcceptBid(RequestBidsModel bid, UsersModel user)
        {
            var        db       = new angelhackEntities();
            UsersModel userRepo = new UsersModel();

            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    userRepo.CheckUserIfExist(db, user);

                    var chkBid = db.requestbids.Where(x => x.ID == bid.ID && x.request.UserID == user.ID).FirstOrDefault();

                    if (chkBid == null)
                    {
                        throw new Exception("Bid does not exist!");
                    }

                    chkBid.request.StatusID = (int)RequestStatus.CONFIRMED;
                    chkBid.IsAwarded        = true;


                    db.SaveChanges();
                    transaction.Commit();
                }
                catch (System.Data.Entity.Infrastructure.DbUpdateException dbU)
                {
                    transaction.Rollback();
                    Exception ex = dbU.GetBaseException();
                    throw new Exception(ex.Message);
                }
                catch (DbEntityValidationException dbEx)
                {
                    transaction.Rollback();
                    string errorMessages = null;

                    foreach (DbEntityValidationResult validationResult in dbEx.EntityValidationErrors)
                    {
                        string entityName = validationResult.Entry.Entity.GetType().Name;
                        foreach (DbValidationError error in validationResult.ValidationErrors)
                        {
                            errorMessages += (entityName + "." + error.PropertyName + ": " + error.ErrorMessage);
                        }
                    }

                    throw new Exception(errorMessages);
                }

                finally
                {
                    db.Database.Connection.Close();
                }
            }
        }
예제 #8
0
        public UsersModel FindUser(string email, string password)
        {
            var db = new angelhackEntities();

            var result = db.users.Where(x => x.Email == email && x.Password == password).FirstOrDefault();

            if (result == null)
            {
                throw new Exception("User does not exist1");
            }

            return(mapper.Map <user, UsersModel>(result));
        }
예제 #9
0
        public List <RequestModel> GetAllMyRequest(UsersModel user)
        {
            UsersModel          userRepo   = new UsersModel();
            List <RequestModel> myRequests = new List <RequestModel>();

            using (var db = new angelhackEntities())
            {
                userRepo.CheckUserIfExist(db, user);

                var result = db.requests.Where(x => x.UserID == user.ID).ToList();

                myRequests = mapper.Map <List <request>, List <RequestModel> >(result);
            }

            return(myRequests);
        }
예제 #10
0
        public void UpdatePassword(UsersAuth uAuth)
        {
            var db = new angelhackEntities();

            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    var newUser = db.users.Where(x => x.ID == uAuth.ID).FirstOrDefault();
                    newUser.Password = uAuth.Password;

                    db.SaveChanges();
                    transaction.Commit();
                }
                catch (System.Data.Entity.Infrastructure.DbUpdateException dbU)
                {
                    transaction.Rollback();
                    Exception ex = dbU.GetBaseException();
                    throw new Exception(ex.Message);
                }
                catch (DbEntityValidationException dbEx)
                {
                    transaction.Rollback();

                    string errorMessages = null;

                    foreach (DbEntityValidationResult validationResult in dbEx.EntityValidationErrors)
                    {
                        string entityName = validationResult.Entry.Entity.GetType().Name;
                        foreach (DbValidationError error in validationResult.ValidationErrors)
                        {
                            errorMessages += (entityName + "." + error.PropertyName + ": " + error.ErrorMessage);
                        }
                    }

                    throw new Exception(errorMessages);
                }

                finally
                {
                    db.Database.Connection.Close();
                }
            }
        }
예제 #11
0
        public void ConfirmPayment(RequestBidsModel bidRef, UsersModel auth)
        {
            using (var db = new angelhackEntities())
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        var bid = db.requestbids.Where(x => x.ID == bidRef.ID).FirstOrDefault();

                        if (bid == null)
                        {
                            throw new Exception("Bid does not exist!");
                        }

                        if (bid.request.StatusID != (int)RequestStatus.SERVED && bid.request.StatusID != (int)RequestStatus.CONFIRMED)
                        {
                            throw new Exception("Bid does not exist!");
                        }

                        bid.request.StatusID = (int)RequestStatus.CLOSED;


                        db.SaveChanges();


                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                    }
                    finally
                    {
                        db.Database.Connection.Close();
                    }
                }
            }
        }
예제 #12
0
        public List <RequestModel> PendingForMyBid(UsersModel user)
        {
            UsersModel          userRepo   = new UsersModel();
            List <RequestModel> myRequests = new List <RequestModel>();

            using (var db = new angelhackEntities())
            {
                userRepo.CheckUserIfExist(db, user);
                userRepo.IsUserServiceProvider(db, user);
                //var result = db.requestnotifications.Where(x=>x.IsAccepted == true &&
                //(
                // x.request.StatusID != (int)RequestStatus.CANCELLED &&
                //      x.request.StatusID != (int)RequestStatus.SERVED &&
                //        x.request.StatusID != (int)RequestStatus.CLOSED
                //    )

                //).Select(x=>x.request).ToList();

                var result = (from x in db.requestnotifications
                              join a in db.requestbids on new { RequestID = x.RequestID, UserID = x.UserID } equals new { RequestID = a.RequestID, UserID = a.UserID } into aa
                              from aax in aa.DefaultIfEmpty()
                              where aax == null &&
                              x.IsAccepted == true &&
                              (
                                  x.request.StatusID != (int)RequestStatus.CANCELLED &&
                                  x.request.StatusID != (int)RequestStatus.SERVED &&
                                  x.request.StatusID != (int)RequestStatus.CLOSED
                              )
                              select x.request).ToList();


                myRequests = mapper.Map <List <request>, List <RequestModel> >(result);
            }

            return(myRequests);
        }
예제 #13
0
        public RequestModel Create(RequestModel request, UsersModel requestor)
        {
            var db = new angelhackEntities();

            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    var chkUser = db.users.Where(x => x.ID == requestor.ID).FirstOrDefault();


                    if (chkUser == null)
                    {
                        throw new Exception("User does not exist!");
                    }

                    var newRequest = new request();
                    newRequest.CurrentLocation = request.CurrentLocation;
                    newRequest.DateLastUpdated = DateTime.Now;
                    newRequest.DateRequested   = DateTime.Now;
                    newRequest.DeliveryDate    = request.DeliveryDate;
                    newRequest.Description     = request.Description;
                    newRequest.StatusID        = (int)request.StatusID;
                    newRequest.UserID          = requestor.ID;

                    db.requests.Add(newRequest);
                    db.SaveChanges();

                    transaction.Commit();

                    request.ID     = newRequest.ID;
                    request.UserID = requestor.ID;
                    request.User   = mapper.Map <user, UsersModel>(chkUser);
                    return(request);
                }
                catch (System.Data.Entity.Infrastructure.DbUpdateException dbU)
                {
                    transaction.Rollback();
                    Exception ex = dbU.GetBaseException();
                    throw new Exception(ex.Message);
                }
                catch (DbEntityValidationException dbEx)
                {
                    transaction.Rollback();
                    string errorMessages = null;

                    foreach (DbEntityValidationResult validationResult in dbEx.EntityValidationErrors)
                    {
                        string entityName = validationResult.Entry.Entity.GetType().Name;
                        foreach (DbValidationError error in validationResult.ValidationErrors)
                        {
                            errorMessages += (entityName + "." + error.PropertyName + ": " + error.ErrorMessage);
                        }
                    }

                    throw new Exception(errorMessages);
                }

                finally
                {
                    db.Database.Connection.Close();
                }
            }
        }
예제 #14
0
        public void DeclineRequest(RequestModel notification, UsersModel user)
        {
            var        db       = new angelhackEntities();
            UsersModel userRepo = new UsersModel();

            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    userRepo.CheckUserIfExist(db, user);
                    userRepo.IsUserServiceProvider(db, user);


                    var newNotification = db.requestnotifications.Where(x => x.UserID == user.ID

                                                                        && x.IsDeclined == false
                                                                        &&
                                                                        (
                                                                            x.request.StatusID != (int)RequestStatus.CANCELLED &&
                                                                            x.request.StatusID != (int)RequestStatus.SERVED &&
                                                                            x.request.StatusID != (int)RequestStatus.CLOSED
                                                                        )
                                                                        &&
                                                                        x.RequestID == notification.ID).FirstOrDefault();

                    if (newNotification == null)
                    {
                        throw new Exception("Request no longer exist!");
                    }

                    newNotification.DateLastUpdated = DateTime.Now;
                    newNotification.IsDeclined      = true;
                    db.SaveChanges();
                    transaction.Commit();
                }
                catch (System.Data.Entity.Infrastructure.DbUpdateException dbU)
                {
                    transaction.Rollback();
                    Exception ex = dbU.GetBaseException();
                    throw new Exception(ex.Message);
                }
                catch (DbEntityValidationException dbEx)
                {
                    transaction.Rollback();
                    string errorMessages = null;

                    foreach (DbEntityValidationResult validationResult in dbEx.EntityValidationErrors)
                    {
                        string entityName = validationResult.Entry.Entity.GetType().Name;
                        foreach (DbValidationError error in validationResult.ValidationErrors)
                        {
                            errorMessages += (entityName + "." + error.PropertyName + ": " + error.ErrorMessage);
                        }
                    }

                    throw new Exception(errorMessages);
                }

                finally
                {
                    db.Database.Connection.Close();
                }
            }
        }
예제 #15
0
        public void CreateOrUpdate(UsersModel user)
        {
            var     db          = new angelhackEntities();
            Boolean isNewRecord = true;

            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    var newUser = db.users.Where(x => x.ID == user.ID).FirstOrDefault();


                    if (newUser == null)
                    {
                        newUser     = new user();
                        isNewRecord = true;
                    }


                    newUser.Fullname    = user.Fullname;
                    newUser.Email       = user.Email;
                    newUser.ImageUrl    = user.ImageUrl;
                    newUser.IsActivated = user.IsActivated;
                    newUser.IsActive    = user.IsActive;
                    newUser.UserTypeID  = user.UserTypeID;

                    if (isNewRecord)
                    {
                        db.users.Add(newUser);
                    }

                    db.SaveChanges();

                    transaction.Commit();
                }
                catch (System.Data.Entity.Infrastructure.DbUpdateException dbU)
                {
                    transaction.Rollback();
                    Exception ex = dbU.GetBaseException();
                    throw new Exception(ex.Message);
                }
                catch (DbEntityValidationException dbEx)
                {
                    transaction.Rollback();

                    string errorMessages = null;

                    foreach (DbEntityValidationResult validationResult in dbEx.EntityValidationErrors)
                    {
                        string entityName = validationResult.Entry.Entity.GetType().Name;
                        foreach (DbValidationError error in validationResult.ValidationErrors)
                        {
                            errorMessages += (entityName + "." + error.PropertyName + ": " + error.ErrorMessage);
                        }
                    }

                    throw new Exception(errorMessages);
                }

                finally
                {
                    db.Database.Connection.Close();
                }
            }
        }
예제 #16
0
        public UserModelPaged GetList(UsersModel user, string search = null, int startIndex = 1, int pageSize = 10, string sortBy = "ID DESC")
        {
            var db = new angelhackEntities();


            var propertyInfo = typeof(user).GetProperty("ID");

            OrderByDirection sortDirec = OrderByDirection.Ascending;

            var resultset = db.users.Where(a =>


                                           (
                                               (search == null ? true : a.ID.ToString().Contains(search)) ||
                                               (search == null ? true : a.Fullname.Contains(search)) ||
                                               (search == null ? true : a.Email.Contains(search))

                                           )


                                           ).OrderBy(x => propertyInfo.GetValue(x, null), sortDirec);



            var totalRowCount = resultset.Count();
            var recordTemp    = resultset.Skip((startIndex - 1) * pageSize).Take(pageSize).ToList();


            UserModelPaged pagedRecords = new UserModelPaged();

            pagedRecords.PageNumber   = startIndex;
            pagedRecords.TotalRecords = totalRowCount;

            pagedRecords.Records = mapper.Map <List <user>, List <UsersModel> >(recordTemp);

            var totalPages  = (int)Math.Ceiling((decimal)pagedRecords.TotalRecords / (decimal)pageSize);
            var currentPage = startIndex == 0 ? (int)startIndex : 1;
            var startPage   = currentPage - 5;
            var endPage     = currentPage + 4;

            if (startPage <= 0)
            {
                endPage  -= (startPage - 1);
                startPage = 1;
            }

            if (startIndex >= totalPages)
            {
                endPage = totalPages;
                if (endPage > 10)
                {
                    startPage = endPage - 9;
                }
            }
            pagedRecords.CurrentPage        = startIndex;
            pagedRecords.StartPage          = startPage;
            pagedRecords.EndPage            = endPage;
            pagedRecords.TotalPages         = totalPages;
            pagedRecords.PageSize           = pageSize;
            pagedRecords.CurrentRecordCount = pagedRecords.Records.Count();

            return(pagedRecords);
        }
예제 #17
0
        public void CancelRequest(RequestModel request, UsersModel requestor)
        {
            var db = new angelhackEntities();

            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    var chkUser = db.users.Where(x => x.ID == requestor.ID).FirstOrDefault();


                    if (chkUser == null)
                    {
                        throw new Exception("User does not exist!");
                    }

                    var newRequest = db.requests.Where(x => x.ID == request.ID
                                                       &&
                                                       (
                                                           x.StatusID != (int)RequestStatus.CANCELLED &&
                                                           x.StatusID != (int)RequestStatus.SERVED &&
                                                           x.StatusID != (int)RequestStatus.CLOSED
                                                       )

                                                       && x.UserID == requestor.ID).FirstOrDefault();

                    if (newRequest == null)
                    {
                        throw new Exception("Request does not exist!");
                    }

                    newRequest.StatusID = (int)RequestStatus.CANCELLED;

                    db.SaveChanges();

                    transaction.Commit();
                }
                catch (System.Data.Entity.Infrastructure.DbUpdateException dbU)
                {
                    transaction.Rollback();
                    Exception ex = dbU.GetBaseException();
                    throw new Exception(ex.Message);
                }
                catch (DbEntityValidationException dbEx)
                {
                    transaction.Rollback();
                    string errorMessages = null;

                    foreach (DbEntityValidationResult validationResult in dbEx.EntityValidationErrors)
                    {
                        string entityName = validationResult.Entry.Entity.GetType().Name;
                        foreach (DbValidationError error in validationResult.ValidationErrors)
                        {
                            errorMessages += (entityName + "." + error.PropertyName + ": " + error.ErrorMessage);
                        }
                    }

                    throw new Exception(errorMessages);
                }

                finally
                {
                    db.Database.Connection.Close();
                }
            }
        }