示例#1
0
        public bool ChangeWorkerStatus(PartnerInfoEntity entity)
        {
            IDbContextTransaction tran = _context.Database.BeginTransaction();

            try
            {
                if (!Utility.CheckUserExists(_context, entity.userId))
                {
                    return(false);
                }

                var query = from d in _context.M_PARTNER_INFOS
                            where d.USER_ID == entity.userId
                            select d;

                M_PARTNER_INFO user = query.Single();
                user.STATUS = entity.status;

                _context.SaveChanges();

                // Commit transaction.
                tran.Commit();

                return(true);
            }
            catch
            {
                // Rollback transaction.
                tran.Rollback();
                return(false);
            }
        }
示例#2
0
        /// <summary>
        /// Get worker/ company info.
        /// </summary>
        /// <param name="workerId">Worker Id.</param>
        /// <returns>Worker Info Entity</returns>
        public static PartnerInfoEntity GetWorkerInfo(AloaiDataContext db, decimal workerId)
        {
            PartnerInfoEntity workerEntity = new PartnerInfoEntity();

            // User info.
            var user = from d in db.M_USERS
                       where d.USER_ID == workerId
                       select d;

            if (user.Any())
            {
                // Worker info.
                var workerInfo = from d in db.M_PARTNER_INFOS
                                 where d.USER_ID == workerId
                                 select d;

                if (workerInfo.Any())
                {
                    M_PARTNER_INFO info = workerInfo.Single();

                    workerEntity.userId         = info.USER_ID;
                    workerEntity.score          = info.SCORE.Value;
                    workerEntity.introduce      = info.INTRODUCE;
                    workerEntity.fitLocationFlg = info.FIX_LOCATION_FLG;

                    Location loc = new Location();
                    loc.longitude = info.LONGITUDE;
                    loc.latitude  = info.LATITUDE;
                    loc.address   = info.ADDRESS;

                    workerEntity.location       = loc;
                    workerEntity.verifyFlg      = info.VERIFY_FLG;
                    workerEntity.verifyDate     = info.VERIFY_DATE;
                    workerEntity.verifyDateFrom = info.VERIFY_DATE_FROM;
                    workerEntity.verifyDateTo   = info.VERIFY_DATE_TO;
                    workerEntity.likeNum        = info.LIKE_NUM;
                    workerEntity.status         = info.STATUS;
                    workerEntity.regDatetime    = info.REG_DATETIME;
                    workerEntity.updDatetime    = info.UPD_DATETIME;
                }
            }

            return(workerEntity);
        }
示例#3
0
        public ActionResult UpdateFixLocation(decimal userId, decimal fixLocationFlg)
        {
            using (IDbContextTransaction tran = _context.Database.BeginTransaction())
            {
                try
                {
                    var queryPartner = from d in _context.M_PARTNER_INFOS
                                       where d.USER_ID == userId
                                       select d;

                    if (queryPartner.Any())
                    {
                        M_PARTNER_INFO partner = queryPartner.Single();
                        partner.FIX_LOCATION_FLG = fixLocationFlg;
                        partner.UPD_DATETIME     = Utility.GetSysDateTime();

                        _context.SaveChanges();
                        tran.Commit();
                    }

                    return(Ok(new Result
                    {
                        Status = 200,
                        Message = string.Empty,
                        Data = true
                    }));
                }
                catch (Exception)
                {
                    tran.Rollback();
                }
            }

            return(Ok(new Result
            {
                Status = 404,
                Message = string.Empty,
                Data = false
            }));
        }
示例#4
0
        /// <summary>
        /// Update score
        /// </summary>
        /// <param name="db">PartTimeDataClassesDataContext</param>
        /// <param name="exchangeId">Exchange Id</param>
        /// <param name="score">Score</param>
        /// <param name="modeUserEstimation">Mode user estimation</param>
        /// <returns>OK: True; Fail: False</returns>
        public static bool UpdateScore(AloaiDataContext db, decimal contactId, decimal score, decimal modeUserEstimation)
        {
            int     count    = 0;
            decimal scoreAll = 0;

            try
            {
                if (modeUserEstimation == (decimal)Mode.Hirer)
                {
                    var queryWorker = from d in db.V_CONTACT_INFOS
                                      where d.CONTACT_ID == contactId
                                      select d.WORKER_ID;

                    if (!queryWorker.Any())
                    {
                        return(false);
                    }

                    var query = from d in db.D_REVIEWS
                                join c in db.V_CONTACT_INFOS on d.CONTACT_ID equals c.CONTACT_ID
                                where c.WORKER_ID == queryWorker.Single() &&
                                d.REVIEW_MODE_USER == (decimal)Mode.Hirer
                                select d;

                    if (query.Any())
                    {
                        count = query.ToList().Count();

                        var queryScore = (from d in db.D_REVIEWS
                                          join c in db.V_CONTACT_INFOS on d.CONTACT_ID equals c.CONTACT_ID
                                          where c.WORKER_ID == queryWorker.Single() &&
                                          d.REVIEW_MODE_USER == (decimal)Mode.Hirer
                                          select d.SCORE).Sum();

                        scoreAll = queryScore;
                    }

                    var worker = from d in db.M_PARTNER_INFOS
                                 where d.USER_ID == queryWorker.Single()
                                 select d;

                    // Update if exists.
                    if (worker.Any())
                    {
                        M_PARTNER_INFO info = worker.Single();

                        decimal totalScore = scoreAll + score;
                        info.SCORE        = Math.Round(totalScore / (count + 1), 1);
                        info.UPD_DATETIME = GetSysDateTime();
                    }
                    else
                    {
                        M_PARTNER_INFO info = new M_PARTNER_INFO();
                        info.USER_ID = queryWorker.Single();
                        decimal totalScore = scoreAll + score;
                        info.SCORE        = Math.Round(totalScore / (count + 1), 1);
                        info.REG_DATETIME = GetSysDateTime();

                        db.M_PARTNER_INFOS.Add(info);
                    }
                }
                else
                {
                    var queryHirer = from d in db.V_CONTACT_INFOS
                                     where d.CONTACT_ID == contactId
                                     select d.HIRER_ID;

                    if (!queryHirer.Any())
                    {
                        return(false);
                    }

                    var query = from d in db.D_REVIEWS
                                join c in db.V_CONTACT_INFOS on d.CONTACT_ID equals c.CONTACT_ID
                                where c.HIRER_ID == queryHirer.Single() &&
                                d.REVIEW_MODE_USER == (decimal)Mode.Partner
                                select d;

                    if (query.Any())
                    {
                        count = query.ToList().Count();

                        var queryScore = (from d in db.D_REVIEWS
                                          join c in db.V_CONTACT_INFOS on d.CONTACT_ID equals c.CONTACT_ID
                                          where c.HIRER_ID == queryHirer.Single() &&
                                          d.REVIEW_MODE_USER == (decimal)Mode.Partner
                                          select d.SCORE).Sum();

                        scoreAll = queryScore;
                    }

                    var hirer = from d in db.M_HIRER_INFOS
                                where d.USER_ID == queryHirer.Single()
                                select d;

                    // Update if exists.
                    if (hirer.Any())
                    {
                        M_HIRER_INFO info = hirer.Single();

                        decimal totalScore = scoreAll + score;
                        info.SCORE        = Math.Round(totalScore / (count + 1), 1);
                        info.UPD_DATETIME = GetSysDateTime();
                    }
                    else
                    {
                        M_HIRER_INFO info = new M_HIRER_INFO();
                        info.USER_ID = queryHirer.Single();
                        decimal totalScore = scoreAll + score;
                        info.SCORE        = Math.Round(totalScore / (count + 1), 1);
                        info.REG_DATETIME = GetSysDateTime();

                        db.M_HIRER_INFOS.Add(info);
                    }
                }
            }
            catch (Exception ex)
            {
                return(false);
            }

            return(true);
        }
示例#5
0
        public static PartnerEntity GetPartnerInfo(AloaiDataContext db, decimal userId)
        {
            PartnerEntity partnerEntity = null;

            // User info.
            var user = from d in db.M_USERS
                       where d.USER_ID == userId
                       select d;

            if (user.Any())
            {
                partnerEntity = new PartnerEntity();
                M_USER userEntity = user.Single();

                partnerEntity.phoneNumber = userEntity.PHONE_NUMBER;
                partnerEntity.name        = userEntity.NAME;

                ImageInfoEntity avatar = new ImageInfoEntity();
                avatar.path          = userEntity.AVATAR;
                partnerEntity.avatar = avatar;

                // Hirer info.
                var hirerInfo = from d in db.M_PARTNER_INFOS
                                where d.USER_ID == userId
                                select d;

                if (hirerInfo.Any())
                {
                    M_PARTNER_INFO info = hirerInfo.Single();

                    partnerEntity.userId         = info.USER_ID;
                    partnerEntity.introduce      = info.INTRODUCE;
                    partnerEntity.fixLocationFlg = info.FIX_LOCATION_FLG == 1 ? true : false;

                    Location location = new Location();
                    location.longitude      = info.LONGITUDE;
                    location.latitude       = info.LATITUDE;
                    location.address        = info.ADDRESS;
                    partnerEntity.location  = location;
                    partnerEntity.verifyFlg = info.VERIFY_FLG == 1 ? true : false;
                    partnerEntity.likeNum   = info.LIKE_NUM;
                    partnerEntity.score     = info.SCORE;
                }

                var catalogUnit = from d in db.V_PARTNERS
                                  where d.USER_ID == userId
                                  select d;

                if (catalogUnit.Any())
                {
                    partnerEntity.partnerCatalog = new PartnerCatalogEntity();

                    foreach (V_PARTNER catalog in catalogUnit.ToList())
                    {
                        partnerEntity.partnerCatalog.userId = catalog.USER_ID;

                        Catalog cal = new Catalog();
                        cal.catalogCd = catalog.CATALOG_CD;
                        Unit unit = new Unit();
                        unit.unitCd = catalog.UNIT_CD;

                        string languageType = user.Single().LANGUAGE_TYPE;

                        if (string.IsNullOrEmpty(languageType) || languageType.Equals(Constant.LANGUAGE_VN))
                        {
                            cal.catalogName = catalog.CATALOG_NAME;
                            unit.unitName   = catalog.UNIT_NAME;
                        }
                        else
                        {
                            cal.catalogName = catalog.CATALOG_NAME_EN;
                            unit.unitName   = catalog.UNIT_NAME_EN;
                        }

                        partnerEntity.partnerCatalog.catalog = cal;
                        partnerEntity.partnerCatalog.unit    = unit;
                        partnerEntity.partnerCatalog.cost    = catalog.COST;
                        break;
                    }
                }

                partnerEntity.imageInfoList = GetImageList(db, partnerEntity.userId, ImageType.Profile);
            }

            return(partnerEntity);
        }
示例#6
0
        /// <summary>
        /// Update user/ company infomation.
        /// </summary>
        /// <param name="db">DataContext.</param>
        /// <param name="userEntity">User entity</param>
        /// <returns>Ok: true, Fail: false</returns>
        public static bool UpdatePartner(AloaiDataContext db, PartnerEntity partnerEntity)
        {
            var query = from d in db.M_USERS
                        where d.USER_ID == partnerEntity.userId
                        select d;

            M_USER user = query.Single();

            //user.PHONE_NUMBER = partnerEntity.PhoneNumber;
            user.NAME = partnerEntity.name;

            if (partnerEntity.avatar != null && !string.IsNullOrEmpty(partnerEntity.avatar.path))
            {
                string avartaPath;

                if (Utility.UploadAvatar(db, partnerEntity.userId, partnerEntity.avatar, partnerEntity.avatar.path, out avartaPath))
                {
                    user.AVATAR = avartaPath;
                }
            }

            user.UPD_DATETIME = Utility.GetSysDateTime();
            db.SaveChanges();

            var queryPartner = from d in db.M_PARTNER_INFOS
                               where d.USER_ID == partnerEntity.userId
                               select d;

            if (queryPartner.Any())
            {
                M_PARTNER_INFO partner = queryPartner.Single();
                partner.INTRODUCE        = partnerEntity.introduce;
                partner.FIX_LOCATION_FLG = partnerEntity.fixLocationFlg ? 1 : 0;

                if (partnerEntity.fixLocationFlg)
                {
                    partner.LONGITUDE = partnerEntity.location.longitude;
                    partner.LATITUDE  = partnerEntity.location.latitude;
                    partner.ADDRESS   = partnerEntity.location.address;
                }
                else
                {
                    partner.LONGITUDE = string.Empty;
                    partner.LATITUDE  = string.Empty;
                    partner.ADDRESS   = string.Empty;
                }

                partner.UPD_DATETIME = Utility.GetSysDateTime();

                db.SaveChanges();
            }

            var queryDel = from d in db.T_PARTNER_CATALOG_UNITS
                           where d.USER_ID == partnerEntity.userId
                           select d;

            if (queryDel.Any())
            {
                db.T_PARTNER_CATALOG_UNITS.RemoveRange(queryDel.ToList());
                db.SaveChanges();
            }

            if (partnerEntity.partnerCatalog != null)
            {
                T_PARTNER_CATALOG_UNIT worker = new T_PARTNER_CATALOG_UNIT();

                worker.USER_ID    = partnerEntity.userId;
                worker.CATALOG_CD = partnerEntity.partnerCatalog.catalog.catalogCd;
                worker.COST       = partnerEntity.partnerCatalog.cost;
                worker.UNIT_CD    = partnerEntity.partnerCatalog.unit.unitCd;

                worker.REG_DATETIME = Utility.GetSysDateTime();

                db.T_PARTNER_CATALOG_UNITS.Add(worker);
                db.SaveChanges();
            }

            UploadImage(db, partnerEntity.userId, ImageType.Profile, partnerEntity.imageInfoList);

            return(true);
        }
示例#7
0
        public ActionResult UpdateUserInfo([FromBody] UserEntity userEntity)
        {
            IDbContextTransaction tran = _context.Database.BeginTransaction();

            try
            {
                var query = from d in _context.M_USERS
                            where d.USER_ID == userEntity.userId &&
                            d.DELETE_FLG == 0 &&
                            d.BLOCK_FLG == 0
                            select d;

                if (query.Any())
                {
                    M_USER user = query.Single();
                    user.NAME = userEntity.name;

                    _context.SaveChanges();

                    var query1 = from d in _context.M_PARTNER_INFOS
                                 where d.USER_ID == userEntity.userId
                                 select d;

                    if (userEntity.modeUser == (int)Mode.Partner)
                    {
                        M_PARTNER_INFO worker = query1.Single();
                        worker.USER_ID      = query.FirstOrDefault().USER_ID;
                        worker.SCORE        = 0;
                        worker.STATUS       = (int)Status.Offline;
                        worker.REG_DATETIME = Utility.GetSysDateTime();
                        _context.SaveChanges();
                    }
                    else
                    {
                        var query2 = from d in _context.M_HIRER_INFOS
                                     where d.USER_ID == userEntity.userId
                                     select d;

                        M_HIRER_INFO hirer = query2.Single();
                        hirer.USER_ID      = query.FirstOrDefault().USER_ID;
                        hirer.SCORE        = 0;
                        hirer.STATUS       = (int)Status.Offline;
                        hirer.REG_DATETIME = Utility.GetSysDateTime();
                        _context.SaveChanges();
                    }

                    var queryUser = from d in _context.M_USERS
                                    where d.USER_ID == userEntity.userId &&
                                    d.DELETE_FLG == 0
                                    select d;

                    user = queryUser.Single();

                    string         token = Utility.GenerateToken(user, Utility.GetSysDateTime());
                    AuthRepository auth  = new AuthRepository();
                    auth.UpdateToken(_context, user.USER_ID, token);

                    if (user.MODE_USER == (int)Mode.Partner)
                    {
                        PartnerEntity partnerEntity = Utility.GetPartnerInfo(_context, user.USER_ID);
                        partnerEntity.token = token;

                        return(Ok(new Result
                        {
                            Status = 200,
                            Message = string.Empty,
                            Data = partnerEntity
                        }));
                    }
                    else
                    {
                        UserEntity entity = new UserEntity();
                        entity.userId      = user.USER_ID;
                        entity.phoneNumber = user.PHONE_NUMBER;
                        entity.modeDefault = user.MODE_DEFAULT;
                        entity.modeUser    = user.MODE_USER;
                        entity.name        = user.NAME;
                        ImageInfoEntity avatar = new ImageInfoEntity();
                        avatar.path   = user.AVATAR;
                        entity.avatar = avatar;
                        entity.token  = token;

                        M_HIRER_INFO hirer = _context.M_HIRER_INFOS.FirstOrDefault(x => x.USER_ID == entity.userId);

                        entity.userId  = hirer.USER_ID;
                        entity.score   = hirer.SCORE;
                        entity.likeNum = hirer.LIKE_NUM;

                        return(Ok(new Result
                        {
                            Status = 200,
                            Message = string.Empty,
                            Data = entity
                        }));
                    }
                }
                else
                {
                    return(Ok(new Result
                    {
                        Status = 404,
                        Message = string.Empty,
                        Data = null
                    }));
                }
            }
            catch (Exception ex)
            {
                // Rollback transaction.
                tran.Rollback();
                return(Ok(new Result
                {
                    Status = 404,
                    Message = "Error system!",
                    Data = null
                }));
            }
        }
示例#8
0
        public ActionResult SignIn([FromBody] LoginEntity loginEntity)
        {
            IDbContextTransaction tran = _context.Database.BeginTransaction();

            M_USER user = null;

            AuthorEntity author = new AuthorEntity();

            author.phoneNumber = loginEntity.phoneNumber;
            author.token       = loginEntity.token;

            if (!Utility.ValidatiTokenId(author))
            {
                System.Web.Http.HttpError error = new System.Web.Http.HttpError("Error validati token id!");

                return(Ok(new Result
                {
                    Status = 404,
                    Message = error.Message,
                    Data = null
                }));
            }

            try
            {
                if (Utility.CheckPhoneExists(_context, loginEntity.phoneNumber))
                {
                    var query = from d in _context.M_USERS
                                where d.PHONE_NUMBER == loginEntity.phoneNumber &&
                                d.DELETE_FLG == 0
                                select d;

                    user = query.Single();

                    if (!string.IsNullOrEmpty(loginEntity.languageType))
                    {
                        user.LANGUAGE_TYPE = loginEntity.languageType;
                    }
                    else
                    {
                        user.LANGUAGE_TYPE = Constant.LANGUAGE_VN;
                    }

                    user.SIGNIN_LAST = Utility.GetSysDateTime();
                }
                else
                {
                    user              = new M_USER();
                    user.NAME         = string.Empty;
                    user.PHONE_NUMBER = loginEntity.phoneNumber;
                    user.MODE_DEFAULT = (int)Mode.Partner;
                    user.REG_DATETIME = Utility.GetSysDateTime();
                    user.MODE_USER    = (int)Mode.Partner;
                    user.SIGNIN_LAST  = Utility.GetSysDateTime();
                    user.BLOCK_FLG    = (int)BlockFlag.NotBlock;
                    user.DELETE_FLG   = (int)DeleteFlag.Using;

                    if (!string.IsNullOrEmpty(loginEntity.languageType))
                    {
                        user.LANGUAGE_TYPE = loginEntity.languageType;
                    }
                    else
                    {
                        user.LANGUAGE_TYPE = Constant.LANGUAGE_VN;
                    }

                    _context.M_USERS.Add(user);
                    _context.SaveChanges();

                    var query = from d in _context.M_USERS
                                where d.PHONE_NUMBER == loginEntity.phoneNumber &&
                                d.DELETE_FLG == 0
                                select d;

                    M_PARTNER_INFO worker = new M_PARTNER_INFO();
                    worker.USER_ID      = user.USER_ID;
                    worker.SCORE        = 0;
                    worker.STATUS       = (int)Status.Offline;
                    worker.REG_DATETIME = Utility.GetSysDateTime();
                    _context.M_PARTNER_INFOS.Add(worker);
                    _context.SaveChanges();

                    M_HIRER_INFO hirer = new M_HIRER_INFO();
                    hirer.USER_ID      = user.USER_ID;
                    hirer.SCORE        = 0;
                    hirer.STATUS       = (int)Status.Offline;
                    hirer.REG_DATETIME = Utility.GetSysDateTime();
                    _context.M_HIRER_INFOS.Add(hirer);
                    _context.SaveChanges();
                }

                _context.SaveChanges();

                // Commit transaction.
                tran.Commit();

                var queryUser = from d in _context.M_USERS
                                where d.PHONE_NUMBER == loginEntity.phoneNumber &&
                                d.DELETE_FLG == 0
                                select d;

                user = queryUser.Single();

                string         token = Utility.GenerateToken(user, Utility.GetSysDateTime());
                AuthRepository auth  = new AuthRepository();
                auth.UpdateToken(_context, user.USER_ID, token);

                if (loginEntity.modeUser == (int)Mode.Partner)
                {
                    PartnerEntity partnerEntity = Utility.GetPartnerInfo(_context, user.USER_ID);
                    partnerEntity.token = token;

                    return(Ok(new Result
                    {
                        Status = 200,
                        Message = string.Empty,
                        Data = partnerEntity
                    }));
                }
                else
                {
                    UserEntity entity = new UserEntity();
                    entity.userId      = user.USER_ID;
                    entity.phoneNumber = user.PHONE_NUMBER;
                    entity.modeDefault = user.MODE_DEFAULT;
                    entity.modeUser    = user.MODE_USER;
                    entity.name        = user.NAME;
                    ImageInfoEntity avatar = new ImageInfoEntity();
                    avatar.path   = user.AVATAR;
                    entity.avatar = avatar;
                    entity.token  = token;

                    M_HIRER_INFO hirer = _context.M_HIRER_INFOS.FirstOrDefault(x => x.USER_ID == entity.userId);

                    entity.userId  = hirer.USER_ID;
                    entity.score   = hirer.SCORE;
                    entity.likeNum = hirer.LIKE_NUM;

                    return(Ok(new Result
                    {
                        Status = 200,
                        Message = string.Empty,
                        Data = entity
                    }));
                }
            }
            catch (Exception ex)
            {
                // Rollback transaction.
                tran.Rollback();

                return(Ok(new Result
                {
                    Status = 400,
                    Message = ex.Data.ToString(),
                    Data = null
                }));
            }
        }