Example #1
0
        public dynamic GetRootNav(ClaimsPrincipal principal)
        {
            dynamic result = new ExpandoObject();

            try
            {
                SessionManager.DoWork(ss =>
                {
                    var userinfo = ContextProvider.GetUserInfo(principal);
                    var menus    = ss.Query <SysNav>().Where(w => w.Active == true && w.Icon != null && w.Icon.Trim() != "" && w.ParentId == Guid.Parse("10000000-0000-0000-0000-000000000000")).ToList();
                    var root     = (from _menu in menus
                                    select new
                    {
                        _menu.Id,
                        _menu.Name,
                        _menu.Icon,
                        _menu.Position,
                        _menu.Url
                    });
                    result = root.ToList().OrderBy(o => o.Position).ToList();
                });
            }
            catch (Exception)
            {
            }
            return(result);
        }
Example #2
0
        public dynamic ChangePassword(ClaimsPrincipal principal, string pass)
        {
            dynamic result      = new ExpandoObject();
            bool    IsPassDif   = true;
            int     status      = 0;
            string  infoError   = "";
            string  infoSuccess = "";

            try
            {
                SessionManager.DoWork(ss =>
                {
                    var getInfoUser = ContextProvider.GetUserInfo(principal);
                    var user        = ss.Query <User>().SingleOrDefault(p => p.Id == getInfoUser.Id);
                    if (user != null && pass != null)
                    {
                        var rel     = CheckChangePass(user, pass, IsPassDif, infoSuccess, infoError, status);
                        status      = rel.Status;
                        infoSuccess = rel.InfoSuccess;
                        infoError   = rel.InfoError;
                    }
                });
            }
            catch (Exception ex)
            {
                infoError = ex.Message;
                status    = 3;
            }
            result.Status      = status;
            result.InfoSuccess = infoSuccess;
            result.InfoError   = infoError;
            return(result);
        }
Example #3
0
        public string Post(Unit obj, ClaimsPrincipal principal)
        {
            var result = string.Empty;

            SessionManager.DoWork(ss =>
            {
                try
                {
                    //var userDTO = ContextProvider.Get();
                    var userDTO = ContextProvider.GetUserInfo(principal);
                    if (ss.Query <Unit>().SingleOrDefault(p => p.Code == obj.Code) == null)
                    {
                        ss.Save(new Unit
                        {
                            Id          = Guid.NewGuid(),
                            Code        = obj.Code,
                            Name        = obj.Name,
                            CreatedBy   = userDTO.Id,
                            CreatedDate = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture),
                        });
                        result = "Thành công";
                    }
                    else
                    {
                        result = $"{obj.Code} đã được sử dụng!\nAnh/Chị vui lòng kiểm tra lại.";
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    result = ex.Message;
                }
            });
            return(result);
        }
Example #4
0
        public dynamic Get(string url, ClaimsPrincipal principal)
        {
            dynamic result = new ExpandoObject();

            try
            {
                SessionManager.DoWork(ss =>
                {
                    var userinfo = ContextProvider.GetUserInfo(principal);
                    var nav      = ss.Query <SysNav>().Where(s => s.Url == url && s.Active == true).FirstOrDefault();
                    if (nav != null)
                    {
                        var permisionDetail = ss.Query <PermisionDetail>().Where(s => s.NavId == nav.Id && s.CheckAction == true).ToList();
                        var user            = ss.Query <User>().Where(s => s.Id == userinfo.Id).ToList();
                        var permision       = (from _permisionDetail in permisionDetail
                                               join _user in user on _permisionDetail.PermisionId equals _user.PermisionId
                                               select new
                        {
                            _permisionDetail.CheckAction,
                            _permisionDetail.ActionName,
                            _permisionDetail.ActionCode
                        });
                        result = permision.ToList();
                    }
                });
            }
            catch (Exception)
            {
            }
            return(result);
        }
Example #5
0
        public dynamic TonKho(ClaimsPrincipal principal)
        {
            dynamic result   = new ExpandoObject();
            var     userinfo = ContextProvider.GetUserInfo(principal);

            try
            {
                SessionManager.DoWork(ss =>
                {
                    var lstOrgan     = ss.Query <Organization>().ToList();
                    var lstPromotion = ss.Query <Promotion>().ToList();
                    var lstGift      = ss.Query <Gift>().ToList();
                    result           = ss.Query <Store>().Where(s => s.DepartmentId == userinfo.OrganizationId)
                                       .Select(p => new
                    {
                        DepartmentName = ContextProvider.GetOrganizationName(lstOrgan, p.DepartmentId),
                        PromotionName  = ContextProvider.GetPromotionName(lstPromotion, p.PromotionId),
                        GiftName       = ContextProvider.GiftName(lstGift, p.GiftId),
                        p.Amount,
                        p.UpdatedDate
                    }).ToList();
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            return(result);
        }
Example #6
0
        public List <dynamic> GetBranchReport(ClaimsPrincipal principal)
        {
            var lstResults = new List <dynamic>();
            var userinfo   = ContextProvider.GetUserInfo(principal);
            var isTypeUser = ContextProvider.CheckPermission(userinfo.PermisionId);

            try
            {
                SessionManager.DoWork(ss => {
                    var list = ss.Query <Organization>().Where(p => p.ManageCode == "CN").ToList();
                    if (isTypeUser != 1 && isTypeUser != 2)
                    {
                        list = list.Where(w => w.Id == userinfo.Organization.Id).ToList();
                    }
                    lstResults = list.Select(p => (dynamic) new
                    {
                        p.Id,
                        p.Name,
                        p.Code,
                        p.ManageCode,
                        p.ParentId,
                        p.Address,
                        p.Region,
                        value = p.Id,
                        label = p.Name
                    }).ToList();
                });
            }
            catch (Exception ex)
            {
            }
            return(lstResults);
        }
Example #7
0
        // ông lãnh đạo đồng ý.
        public string BrowseLeader(ISession ss, Guid transferId, Stage stage, ClaimsPrincipal principal)
        {
            var result   = string.Empty;
            var userinfo = ContextProvider.GetUserInfo(principal);

            try
            {
                var transfer = ss.Get <TransferGift>(transferId);
                transfer.Status = (int)ContextProvider.statusTransfer.Approve;
                if (stage.Name == "End Stage")
                {
                    transfer.IsComplete = true;
                }
                var transferlog = ss.Query <TransferGiftLog>()
                                  .Single(p => p.TransferGift.Id == transferId && p.Stage.Id == stage.Id && p.AssignDeaprtmentId == userinfo.Organization.Id);
                transferlog.AssignUserId = userinfo.Id;
                transferlog.Status       = transfer.Status;
                transferlog.UpdateDate   = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture);
                var receivingDepartmentId = ss.Query <ReceivingDepartment>().Single(p => p.TransferGift.Id == transferId).DepartmentId;


                result = _storeService.HandlerInput(ss, transferId, receivingDepartmentId);
                if (string.IsNullOrEmpty(result))
                {
                    result = "Duyệt thành công!";
                }
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }
            return(result);
        }
Example #8
0
        public string BrowseLeaderCNN(Guid transferId, ClaimsPrincipal principal)
        {
            var result   = string.Empty;
            var userinfo = ContextProvider.GetUserInfo(principal);

            try
            {
                SessionManager.DoWork(ss =>
                {
                    var transfer = ss.Get <TransferGift>(transferId);
                    var stage    = ss.Query <Workflow>().Single(p => p.ProductId == transfer.Product.Id && p.UserId == userinfo.Id).Stage;
                    if (stage == "Last Stage")
                    {
                        transfer.IsComplete = true;
                    }
                    var transferlog = ss.Query <TransferGiftLog>()
                                      .Where(p => p.TransferGift.Id == transferId && p.AssignUserId == userinfo.Id)
                                      .OrderByDescending(p => p.UpdateDate).First();
                    transferlog.UpdateDate    = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture);
                    var receivingDepartmentId = ss.Query <ReceivingDepartment>().Single(p => p.TransferGift.Id == transferId).DepartmentId;
                    result = _storeService.HandlerOrganization(ss, transferId, transfer.DepartmentId.GetValueOrDefault(), receivingDepartmentId);
                    if (string.IsNullOrEmpty(result))
                    {
                        result = "Browse Success";
                    }
                });
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }
            return(result);
        }
        public string BrowseLeaderQLBH(ISession ss, Guid transferId, Stage stage, ClaimsPrincipal principal)
        {
            var result   = string.Empty;
            var userinfo = ContextProvider.GetUserInfo(principal);

            try
            {
                var transfer = ss.Get <TransferGift>(transferId);
                if (stage.Name == "Last Stage")
                {
                    transfer.IsComplete = true;
                }
                var transferlog = ss.Query <TransferGiftLog>()
                                  .Single(p => p.TransferGift.Id == transferId && p.Stage.Id == stage.Id && p.AssignDeaprtmentId == userinfo.Organization.Id);
                transferlog.AssignUserId = userinfo.Id;
                transferlog.UpdateDate   = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture);
                var receivingPromotionId = ss.Query <ReceivingPromotion>().Single(p => p.TransferGift.Id == transferId).PromotionId;
                result = _storeService.HandlerPromotion(ss, transferId, transfer.DepartmentId.GetValueOrDefault(), transfer.PromotionId.GetValueOrDefault(), receivingPromotionId);
                if (string.IsNullOrEmpty(result))
                {
                    result = "Browse Success";
                }
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }
            return(result);
        }
Example #10
0
        public string EditPermision(PermisionDetail per, ClaimsPrincipal principal)
        {
            var result   = string.Empty;
            var userinfo = ContextProvider.GetUserInfo(principal);

            if (userinfo.PermisionId == 1)
            {
                try
                {
                    SessionManager.DoWork(ss =>
                    {
                        var permision = ss.Query <PermisionDetail>().Where(s => s.Id == per.Id).FirstOrDefault();
                        if (permision != null)
                        {
                            permision.CheckAction = !per.CheckAction;
                            result = "Cập nhật thành công";
                        }
                    });
                }
                catch (Exception)
                {
                    throw;
                }
            }
            else
            {
                result = "Bạn không có quyền 'phân quyền chức năng.'";
            }

            return(result);
        }
Example #11
0
        public string Put(Unit obj, ClaimsPrincipal principal)
        {
            var result = string.Empty;

            SessionManager.DoWork(ss =>
            {
                try
                {
                    var unit = ss.Query <Unit>().SingleOrDefault(p => p.Id == obj.Id);
                    if (unit != null)
                    {
                        //var userDTO = ContextProvider.Get();
                        var userDTO      = ContextProvider.GetUserInfo(principal);
                        unit.Code        = obj.Code;
                        unit.Name        = obj.Name;
                        unit.UpdatedBy   = userDTO.Id;
                        unit.UpdatedDate = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture);
                        ss.Update(unit);
                        result = "Cập nhật thành công";
                    }
                    else
                    {
                        result = $"{obj.Code} không tồn tại!\nAnh/Chị vui lòng kiểm tra lại.";
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    result = ex.Message;
                }
            });
            return(result);
        }
Example #12
0
        public string BrowseStaff(ISession ss, TransferGiftDTO obj, Stage stage, ClaimsPrincipal principal)
        {
            var result   = string.Empty;
            var userinfo = ContextProvider.GetUserInfo(principal);

            try
            {
                SessionManager.DoWork(ss =>
                {
                    var workflow     = ss.Query <Workflow>().Single(p => p.ProductId == obj.ProductId && p.UserId == userinfo.Id && p.Stage == "First Stage");
                    var assignUserId = workflow.AssignUserId;
                    result           = _storeService.ValidateData(ss, userinfo.Organization.Id, obj.Data);
                    if (string.IsNullOrEmpty(result))
                    {
                        var transfer          = ss.Get <TransferGift>(obj.Id);
                        var transferlog       = ss.Query <TransferGiftLog>().Single(p => p.TransferGift.Id == obj.Id && p.Status == (int)ContextProvider.statusTransfer.Draft);
                        transfer.Status       = obj.Status;
                        transfer.DepartmentId = obj.DepartmentId;
                        //transfer.PromotionId = obj.PromotionId;
                        transfer.CreatedDate = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture);
                        transferlog.Status   = obj.Status;
                        if (!string.IsNullOrEmpty(obj.Data.ToString()))
                        {
                            transferlog.Data = JsonConvert.SerializeObject(obj.Data);
                        }
                        transferlog.UpdateDate = transfer.CreatedDate;
                        //ss.CreateSQLQuery($"delete ReceivingPromotion where TransferId = '{ obj.Id}'").UniqueResult();
                        //ss.CreateSQLQuery($"delete TransferDetail where TransferId = '{ obj.Id}'").UniqueResult();
                        result = _transferDetailService.Post(ss, transfer, obj);
                        if (string.IsNullOrEmpty(result))
                        {
                            var newtransferlog = new TransferGiftLog
                            {
                                Id                 = Guid.NewGuid(),
                                TransferGift       = transferlog.TransferGift,
                                AssignUserId       = assignUserId,
                                AssignDeaprtmentId = userinfo.Organization.Id,
                                Comment            = obj.Comment,
                                Data               = transferlog.Data,
                                Status             = obj.Status,
                                UpdateDate         = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture),
                                StageId            = obj.StageId,
                                Dealine            = null
                            };
                            ss.Save(newtransferlog);
                            result = "Browse Success";
                        }
                    }
                });
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }
            return(result);
        }
        public string BrowseStaff(ISession ss, TransferGiftDTO obj, Stage stage, ClaimsPrincipal principal)
        {
            var result   = string.Empty;
            var userinfo = ContextProvider.GetUserInfo(principal);

            try
            {
                result = _storeService.ValidateData(ss, userinfo.Organization.Id, obj.Data);
                if (string.IsNullOrEmpty(result))
                {
                    var nextStage   = ss.Get <Stage>(stage.NextStage);
                    var transfer    = ss.Get <TransferGift>(obj.Id);
                    var transferlog = ss.Query <TransferGiftLog>().Single(p => p.TransferGift.Id == obj.Id && p.Status == (int)ContextProvider.statusTransfer.Draft);
                    transfer.Status      = obj.Status;
                    transfer.PromotionId = obj.PromotionId;
                    transfer.CreatedDate = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture);
                    transferlog.Status   = obj.Status;
                    if (!string.IsNullOrEmpty(obj.Data.ToString()))
                    {
                        transferlog.Data = JsonConvert.SerializeObject(obj.Data);
                    }
                    transferlog.UpdateDate = transfer.CreatedDate;
                    result = _transferDetailService.Post(ss, transfer, obj);
                    if (string.IsNullOrEmpty(result))
                    {
                        var newtransferlog = new TransferGiftLog
                        {
                            Id                 = Guid.NewGuid(),
                            TransferGift       = transferlog.TransferGift,
                            AssignUserId       = null,
                            AssignDeaprtmentId = userinfo.Organization.Id,
                            Comment            = obj.Comment,
                            Data               = transferlog.Data,
                            Status             = obj.Status,
                            UpdateDate         = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture),
                            Stage              = nextStage,
                            Dealine            = null
                        };
                        ss.Save(newtransferlog);
                        result = "Browse Success";
                    }
                }
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }
            return(result);
        }
Example #14
0
        public string BrowseStaff(ISession ss, TransferGiftDTO obj, Stage stage, ClaimsPrincipal principal)
        {
            var result   = string.Empty;
            var userinfo = ContextProvider.GetUserInfo(principal);

            try
            {
                var nextStage   = ss.Get <Stage>(stage.NextStage);
                var transfer    = ss.Get <TransferGift>(obj.Id);
                var transferlog = ss.Query <TransferGiftLog>().Single(p => p.TransferGift.Id == obj.Id && p.Status == (int)ContextProvider.statusTransfer.Draft);
                //transfer.Status = obj.Status;
                transfer.Status      = (int)ContextProvider.statusTransfer.Initialize;
                transfer.CreatedDate = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture);
                transferlog.Status   = (int)ContextProvider.statusTransfer.Initialize;
                if (!string.IsNullOrEmpty(obj.Data.ToString()))
                {
                    transferlog.Data = JsonConvert.SerializeObject(obj.Data);
                }
                transferlog.UpdateDate = transfer.CreatedDate;
                //ss.CreateSQLQuery($"delete TransferDetail where TransferId = '{ obj.Id}'").UniqueResult();

                // xử lý cục Data (phi cấu trúc => có cấu trúc)
                result = _transferDetailService.Post(ss, transfer, obj);
                if (string.IsNullOrEmpty(result))
                {
                    var newtransferlog = new TransferGiftLog
                    {
                        Id                 = Guid.NewGuid(),
                        TransferGift       = transferlog.TransferGift,
                        AssignUserId       = null,
                        AssignDeaprtmentId = userinfo.Organization.Id,
                        Comment            = obj.Comment,
                        Data               = transferlog.Data,
                        Status             = (int)ContextProvider.statusTransfer.Initialize,
                        UpdateDate         = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture),
                        Stage              = nextStage,
                        Dealine            = null
                    };
                    ss.Save(newtransferlog);
                    result = "Gửi duyệt thành công!";
                }
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }
            return(result);
        }
Example #15
0
        public List <dynamic> GetIsUser(ClaimsPrincipal principal, Guid id)
        {
            var lstResults = new List <dynamic>();
            var user       = ContextProvider.GetUserInfo(principal);
            var isTypeUser = ContextProvider.CheckPermission(user.PermisionId);

            SessionManager.DoWork(ss =>
            {
                try
                {
                    lstResults = ss.Query <Gift>()
                                 .Select(p => (dynamic) new
                    {
                        p.Id,
                        p.Code,
                        p.Name,
                        GiftGroupId    = p.GiftGroup.Id,
                        GiftGroupCode  = p.GiftGroup.Code,
                        GiftGroupName  = p.GiftGroup.Name,
                        OptionGiftId   = p.GiftGroup.OptionGift.Id,
                        OptionGiftCode = p.GiftGroup.OptionGift.Code,
                        OptionGiftName = p.GiftGroup.OptionGift.Name,
                        UnitId         = p.Unit.Id,
                        UnitCode       = p.Unit.Code,
                        UnitName       = p.Unit.Name,
                        p.Price,
                        value = p.Name,
                        label = p.Code
                    }).ToList();
                    if (ContextProvider.CheckPermission(user.PermisionId) == 3)
                    {
                        var ids    = ss.Query <TransferDetail>().Where(s => s.ReceivingDepartment == user.OrganizationId && s.ReceivingPromotion == id).Select(s => s.GiftId).ToList();
                        lstResults = lstResults.Where(w => ids.Contains(w.Id)).ToList();
                    }
                    if (ContextProvider.CheckPermission(user.PermisionId) == 2 || ContextProvider.CheckPermission(user.PermisionId) == 1)
                    {
                        var ids    = ss.Query <TransferDetail>().Where(s => s.ReceivingPromotion == id).Select(s => s.GiftId).ToList();
                        lstResults = lstResults.Where(w => ids.Contains(w.Id)).ToList();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            });
            return(lstResults);
        }
Example #16
0
        public List <dynamic> GetDepartmentReport(ClaimsPrincipal principal, string id)
        {
            var lstResults = new List <dynamic>();
            var userinfo   = ContextProvider.GetUserInfo(principal);
            var isTypeUser = ContextProvider.CheckPermission(userinfo.PermisionId);

            try
            {
                SessionManager.DoWork(ss => {
                    var list = ss.Query <Organization>().Where(p => p.ManageCode == "PGD" && p.ParentId == new Guid(id)).ToList();
                    if (isTypeUser == 3)
                    {
                        if (userinfo.Position.IsLeader)
                        {
                            list = list.Where(w => w.ParentId == userinfo.Organization.Id || w.Id == userinfo.Organization.Id).ToList();
                        }
                        else
                        {
                            list = list.Where(w => w.Id == userinfo.Organization.Id).ToList();
                        }
                    }
                    lstResults = list
                                 .Select(p => (dynamic) new
                    {
                        p.Id,
                        p.Name,
                        p.Code,
                        p.ManageCode,
                        p.ParentId,
                        p.Address,
                        p.Region,
                        value = p.Id,
                        label = p.Name
                    }).ToList();
                });
            }
            catch (Exception ex)
            {
            }
            return(lstResults);
        }
Example #17
0
        public string BrowseLeaderQLBH(Guid transferId, ClaimsPrincipal principal)
        {
            var result   = string.Empty;
            var userinfo = ContextProvider.GetUserInfo(principal);

            try
            {
                SessionManager.DoWork(ss => {
                    var transfer           = ss.Get <TransferGift>(transferId);
                    var workflow           = ss.Query <Workflow>().Single(p => p.ProductId == transfer.Product.Id && p.UserId == userinfo.Id);
                    var assignUserId       = workflow.AssignUserId;
                    var assignDepartmentId = ss.Get <User>(assignUserId).Organization.Id;
                    transfer.Status        = (int)ContextProvider.statusTransfer.Approve;
                    var transferlog        = ss.Query <TransferGiftLog>()
                                             .Where(p => p.TransferGift.Id == transferId && p.AssignUserId == userinfo.Id)
                                             .OrderByDescending(p => p.UpdateDate).First();
                    transferlog.Status     = transfer.Status;
                    transferlog.UpdateDate = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture);
                    var newtransferlog     = new TransferGiftLog
                    {
                        Id                 = Guid.NewGuid(),
                        TransferGift       = transferlog.TransferGift,
                        AssignUserId       = assignUserId,
                        AssignDeaprtmentId = assignDepartmentId,
                        Comment            = transferlog.Comment,
                        Data               = transferlog.Data,
                        Status             = transfer.Status,
                        UpdateDate         = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture),
                        StageId            = transferlog.StageId,
                        Dealine            = null
                    };
                    ss.Save(newtransferlog);
                    result = "Browse Success";
                });
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }
            return(result);
        }
        public string BrowseLeader(ISession ss, Guid transferId, Stage stage, ClaimsPrincipal principal)
        {
            var result   = string.Empty;
            var userinfo = ContextProvider.GetUserInfo(principal);

            try
            {
                var nextStage = ss.Get <Stage>(stage.NextStage);
                var transfer  = ss.Get <TransferGift>(transferId);
                transfer.Status = (int)ContextProvider.statusTransfer.Approve;
                //if (stage.Name == "End Stage")
                //    transfer.IsComplete = true;
                var transferlog = ss.Query <TransferGiftLog>()
                                  .Single(p => p.TransferGift.Id == transferId && p.Stage.Id == stage.Id && p.AssignDeaprtmentId == userinfo.Organization.Id);
                transferlog.AssignUserId = userinfo.Id;
                transferlog.Status       = transfer.Status;
                transferlog.UpdateDate   = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture);
                var newtransferlog = new TransferGiftLog
                {
                    Id                 = Guid.NewGuid(),
                    TransferGift       = transferlog.TransferGift,
                    AssignUserId       = null,
                    AssignDeaprtmentId = userinfo.Organization.Id,
                    Comment            = transferlog.Comment,
                    Data               = transferlog.Data,
                    Status             = transferlog.Status,
                    UpdateDate         = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture),
                    Stage              = nextStage,
                    Dealine            = null
                };
                result = "Browse Success";
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }
            return(result);
        }
Example #19
0
        public dynamic GetAllNavs(ClaimsPrincipal principal)
        {
            dynamic result = new ExpandoObject();

            try
            {
                SessionManager.DoWork(ss =>
                {
                    var userinfo   = ContextProvider.GetUserInfo(principal);
                    var navs       = new List <NavDTO>();
                    var menus      = ss.Query <SysNav>().Where(w => w.Active == true).ToList();
                    var permisions = ss.Query <PermisionDetail>().Where(w => w.PermisionId == userinfo.PermisionId && w.ActionCode == "VIEW_PAGE").ToList();
                    var root       = ss.Query <PermisionDetail>().Where(w => w.ParentId == Guid.Parse("10000000-0000-0000-0000-000000000000")).ToList();
                    root.ForEach(itm =>
                    {
                        var menu      = menus.FirstOrDefault(f => f.Id == itm.NavId);
                        var children  = new List <NavDTO>();
                        var listChild = permisions.Where(w => w.ParentId == itm.Id).ToList();
                        ChildNav(children, listChild, permisions, menus, itm);
                        var nav = new NavDTO()
                        {
                            id       = itm.Id,
                            name     = menu.Name,
                            icon     = menu.Icon,
                            title    = menu.Title,
                            url      = "/" + menu.Url,
                            children = children,
                        };
                        navs.Add(nav);
                    });
                    result = navs.ToList();
                });
            }
            catch (Exception)
            {
            }
            return(result);
        }
Example #20
0
        public dynamic GetAlls(ClaimsPrincipal principal)
        {
            dynamic result = new ExpandoObject();

            try
            {
                SessionManager.DoWork(ss =>
                {
                    var userinfo  = ContextProvider.GetUserInfo(principal);
                    var permision = ss.Query <SysPermision>().Select(s => new
                    {
                        s.PermisionId,
                        s.PermisionName,
                        value = s.PermisionId,
                        label = s.PermisionName
                    }).ToList();
                    result = permision.ToList();
                });
            }
            catch (Exception)
            {
            }
            return(result);
        }
Example #21
0
        public List <dynamic> GetGiftUse(ClaimsPrincipal principal, Guid id)
        {
            var lstResults = new List <dynamic>();
            var user       = ContextProvider.GetUserInfo(principal);
            var isTypeUser = ContextProvider.CheckPermission(user.PermisionId);

            SessionManager.DoWork(ss =>
            {
                try
                {
                    var promotion     = ss.Get <Promotion>(id);
                    var organizations = ss.Query <Organization>().ToList();
                    var gifts         = ss.Query <Gift>().ToList();
                    var idGift        = ss.Query <GiftPromotion>().Where(w => w.GiftPromotionId == promotion.GiftPromotionId).Select(s => s.GiftId).ToList();
                    var list          = ss.Query <CustomerGift>().GroupBy(g => new { g.BRANCHID, g.SUBBRID, GiftId = g.Gift.Id })
                                        .Select(s => new { BranchCode = s.Key.BRANCHID, DepCode = s.Key.SUBBRID, GiftId = s.Key.GiftId }).ToList();
                    if (ContextProvider.CheckPermission(user.PermisionId) == 3)
                    {
                        var codeDeps = organizations.Where(s => s.Id == user.Organization.Id || s.ParentId == user.Organization.Id).Select(s => s.Code).ToList();
                        var ids      = list.Where(s => codeDeps.Contains(s.DepCode)).Select(s => s.GiftId).ToList();
                        lstResults   = gifts.Where(w => ids.Contains(w.Id) && idGift.Contains(w.Id)).ToList().Select(p => (dynamic) new
                        {
                            p.Id,
                            p.Code,
                            p.Name,
                            GiftGroupId    = p.GiftGroup.Id,
                            GiftGroupCode  = p.GiftGroup.Code,
                            GiftGroupName  = p.GiftGroup.Name,
                            OptionGiftId   = p.GiftGroup.OptionGift.Id,
                            OptionGiftCode = p.GiftGroup.OptionGift.Code,
                            OptionGiftName = p.GiftGroup.OptionGift.Name,
                            UnitId         = p.Unit.Id,
                            UnitCode       = p.Unit.Code,
                            UnitName       = p.Unit.Name,
                            p.Price,
                            value = p.Name,
                            label = p.Code
                        }).ToList();
                    }
                    if (ContextProvider.CheckPermission(user.PermisionId) == 2 || ContextProvider.CheckPermission(user.PermisionId) == 1)
                    {
                        var codeDeps = organizations.Select(s => s.Code).ToList();
                        var ids      = list.Where(s => codeDeps.Contains(s.DepCode)).Select(s => s.GiftId).ToList();
                        lstResults   = gifts.Where(w => idGift.Contains(w.Id) && ids.Contains(w.Id)).ToList().Select(p => (dynamic) new
                        {
                            p.Id,
                            p.Code,
                            p.Name,
                            GiftGroupId    = p.GiftGroup.Id,
                            GiftGroupCode  = p.GiftGroup.Code,
                            GiftGroupName  = p.GiftGroup.Name,
                            OptionGiftId   = p.GiftGroup.OptionGift.Id,
                            OptionGiftCode = p.GiftGroup.OptionGift.Code,
                            OptionGiftName = p.GiftGroup.OptionGift.Name,
                            UnitId         = p.Unit.Id,
                            UnitCode       = p.Unit.Code,
                            UnitName       = p.Unit.Name,
                            p.Price,
                            value = p.Name,
                            label = p.Code
                        }).ToList();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            });
            return(lstResults);
        }
        public string Approve(string id, string param, string idGift,
                              string idPromotion, int numGift, ClaimsPrincipal principal)
        {
            var result = string.Empty;

            try
            {
                var userinfo       = ContextProvider.GetUserInfo(principal);
                var isTypeUser     = ContextProvider.CheckPermission(userinfo.PermisionId);
                var idCustomerGift = new Guid(id);
                var _productId     = new Guid(Constants.ID_PRODUCT_TANG_QUA_KHACH_HANG);

                SessionManager.DoWork(s =>
                {
                    var customerGift = s.Query <CustomerGift>().SingleOrDefault(p => p.Id == idCustomerGift);
                    if (customerGift != null)
                    {
                        var product = s.Get <Product>(_productId);
                        var stage   = s.Query <Stage>().SingleOrDefault(p => p.ProductId == product.Id && p.PositionId == userinfo.Position.Id && p.Name == Constants.DUYET);
                        if (stage != null)
                        {
                            if (param == Constants.APPROVE)
                            {
                                // check số lượng quà tặng trong kho.
                                var store = s.Query <Store>().SingleOrDefault(p => p.DepartmentId == userinfo.Organization.Id &&
                                                                              p.PromotionId == new Guid(idPromotion) && p.GiftId == new Guid(idGift));
                                if (store.Amount >= numGift)
                                {
                                    int status = (int)ContextProvider.statusTransfer.Approve;
                                    UpdateCustomerGift(customerGift, userinfo, status);
                                    SaveCustomerGiftLog(s, stage, customerGift, userinfo);

                                    // update Store
                                    store.Amount -= numGift;
                                    result        = Constants.DUYET_THANH_CONG;
                                }
                                else
                                {
                                    result = "Quà tặng trong kho không đủ";
                                }
                            }
                            if (param == Constants.REFUSE)
                            {
                                int status = (int)ContextProvider.statusTransfer.Refuse;
                                UpdateCustomerGift(customerGift, userinfo, status);
                                SaveCustomerGiftLog(s, stage, customerGift, userinfo);
                                result = Constants.TU_CHOI_DUYET_THANH_CONG;
                            }
                        }
                        else
                        {
                            result = "Chức năng này dành cho KSV";
                        }
                    }
                });
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }
            return(result);
        }
Example #23
0
        public List <BaoCaoQuaTangDTO> GetDataReport(ClaimsPrincipal principal, string productId, string idPromotion, string fromDate, string toDate)
        {
            var result = new List <BaoCaoQuaTangDTO>();

            SessionManager.DoWork(ss =>
            {
                try
                {
                    var _fromDate = DateTime.ParseExact(fromDate + " 00:00:00,000", "yyyy-MM-dd HH:mm:ss,fff",
                                                        System.Globalization.CultureInfo.InvariantCulture);
                    var _toDate = DateTime.ParseExact(toDate + " 00:00:00,000", "yyyy-MM-dd HH:mm:ss,fff",
                                                      System.Globalization.CultureInfo.InvariantCulture);
                    var userinfo     = ContextProvider.GetUserInfo(principal);
                    var promotion    = ss.Query <Promotion>().ToList();
                    var organization = ss.Query <Organization>().ToList();

                    var tranfer = ss.Query <TransferGift>().Where(s => s.Status == 2 && s.CreatedDate <= _toDate.AddDays(1) && s.CreatedDate >= _fromDate).ToList();

                    if (productId != null)
                    {
                        tranfer = tranfer.Where(s => s.Product.Id == new Guid(productId)).ToList();
                    }
                    if (userinfo.OrganizationCode != "QLBH" && userinfo.UserName != "admin" && userinfo.UserName != "nva")
                    {
                        //Nếu là LD CN/PGD
                        if (userinfo.Position.IsLeader)
                        {
                            tranfer = tranfer.Where(s => s.DepartmentId == userinfo.Organization.Id).ToList();
                        }
                        else//CV CN/PGD
                        {
                            tranfer = tranfer.Where(s => s.CreatedBy == userinfo.Id).ToList();
                        }
                    }
                    if (idPromotion != null && productId.ToUpper() != "7A452975-E667-41CB-9B32-5875D357FF37")
                    {
                        tranfer = tranfer.Where(s => s.PromotionId == new Guid(idPromotion)).ToList();
                    }

                    var lstTranferId  = tranfer.Select(s => s.Id);
                    var tranferDetail = ss.Query <TransferDetail>().Where(s => lstTranferId.Contains(s.TransferGift.Id)).ToList();
                    var gifts         = ss.Query <Gift>().ToList();
                    var lstGift       = (from _tranfer in tranfer
                                         join _tranferDetail in tranferDetail on _tranfer.Id equals _tranferDetail.TransferGift.Id
                                         join _gifts in gifts on _tranferDetail.GiftId equals _gifts.Id
                                         select new BaoCaoQuaTangDTO
                    {
                        Amount = _tranferDetail.Amount,
                        ReceivingDepartment = ContextProvider.GetOrganizationName(organization, _tranferDetail.ReceivingDepartment),
                        ReceivingPromotion = ContextProvider.GetPromotionName(promotion, _tranferDetail.ReceivingPromotion),
                        CreatedDate = ContextProvider.GetConvertDatetime(_tranfer.CreatedDate),
                        TranferDepartment = ContextProvider.GetOrganizationName(organization, _tranfer.DepartmentId),
                        Code = _gifts.Code,
                        Name = _gifts.GiftGroup.OptionGift.Name + " - " + _gifts.GiftGroup.Name + " - " + _gifts.Name,
                        UnitName = _gifts.Unit.Name,
                        Price = _gifts.Price.ToString("f0"),
                        GiftGroupId = _gifts.GiftGroup.Id.ToString(),
                        GroupName = _gifts.GiftGroup.Name,
                        OptionGiftId = _gifts.GiftGroup.OptionGift.Id.ToString(),
                        OptionGiftName = _gifts.GiftGroup.OptionGift.Name,
                        OrderByDate = ContextProvider.GetOrderDatetime(_tranfer.CreatedDate)
                    }).OrderBy(pp => pp.Name).OrderBy(p => p.GroupName).OrderBy(pp => pp.OptionGiftName).OrderByDescending(pp => pp.OrderByDate);
                    result = lstGift.ToList();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            });
            return(result);
        }
Example #24
0
        public List <BC06_DTO> GetDataReport07(ClaimsPrincipal principal, string productId, string idPromotion, string idGift, string idBranch, string idDepartment, string fromDate, string toDate)
        {
            var result = new List <BC06_DTO>();

            SessionManager.DoWork(ss =>
            {
                try
                {
                    var _fromDate = DateTime.ParseExact(fromDate + " 00:00:00,000", "yyyy-MM-dd HH:mm:ss,fff",
                                                        System.Globalization.CultureInfo.InvariantCulture);
                    var _toDate = DateTime.ParseExact(toDate + " 00:00:00,000", "yyyy-MM-dd HH:mm:ss,fff",
                                                      System.Globalization.CultureInfo.InvariantCulture);
                    //var _toDate = Convert.ToDateTime(DateTime.ParseExact(toDate, "dd-MM-yyyy", CultureInfo.InvariantCulture));
                    var userinfo     = ContextProvider.GetUserInfo(principal);
                    var promotions   = ss.Query <Promotion>().ToList();
                    var organization = ss.Query <Organization>().ToList();
                    var branchs      = organization.Where(w => w.ManageCode == "CN").ToList();
                    var dept         = organization.Where(w => w.ManageCode == "PGD").ToList();
                    var gifts        = ss.Query <Gift>().ToList();
                    var data         = ss.Query <CustomerGift>().Where(s => s.Status == 2 && s.CREATEDDATE <= _toDate.AddDays(1) && s.CREATEDDATE >= _fromDate).ToList();
                    if (!string.IsNullOrEmpty(idPromotion))
                    {
                        data = data.Where(s => s.Promotion.Id == new Guid(idPromotion)).ToList();
                    }
                    if (!string.IsNullOrEmpty(idDepartment))
                    {
                        var dep = dept.FirstOrDefault(w => w.Id == new Guid(idDepartment));
                        data    = data.Where(s => s.SUBBRID == dep.Code).ToList();
                    }
                    if (!string.IsNullOrEmpty(idBranch))
                    {
                        var branch = branchs.FirstOrDefault(w => w.Id == new Guid(idBranch));
                        data       = data.Where(s => s.BRANCHID == branch.Code).ToList();
                    }
                    if (!string.IsNullOrEmpty(idGift))
                    {
                        data = data.Where(s => s.Gift.Id == new Guid(idGift)).ToList();
                    }
                    if (userinfo.OrganizationCode != "QLBH" && userinfo.UserName != "admin" && userinfo.UserName != "nva")
                    {
                        //Nếu là LD CN/PGD
                        if (userinfo.Position.IsLeader)
                        {
                            data = data.Where(s => s.SUBBRID == userinfo.Organization.Code).ToList();
                        }
                        else//CV CN/PGD
                        {
                            data = data.Where(s => s.CREATEDBy == userinfo.Id).ToList();
                        }
                    }
                    switch (productId.ToUpper())
                    {
                    case "BC_07":
                        var lstGift = (from _data in data
                                       join _gift in gifts on _data.Gift.Id equals _gift.Id
                                       join _promotion in promotions on _data.Promotion.Id equals _promotion.Id
                                       select new BC06_DTO
                        {
                            DepartmentName = _data.SUBBRNAME,
                            BranchName = _data.BRNAME,
                            SoTK = _data.Acctno,
                            CIF = _data.CusId,
                            CustomerName = _data.CusName,
                            GhiChu = "",
                            GiaTriQuaTang = _gift.Price,
                            KyHan = _data.TERM,
                            LoaiQua = _data.BRNAME,
                            NgayGui = _data.TODATE.ToString("dd-MM-yyyy"),
                            SoDu = _data.BALANCE,
                            GiftName = _gift.Name,
                            PromotionName = _promotion.Name,
                            PhanHe = _data.PhanHe,
                            LoaiTien = _data.CCYCD,
                            TenLoaiHinh = _data.TENLOAIHINH,
                            OrderByDate = ContextProvider.GetOrderDatetime(_data.CREATEDDATE)
                        }).OrderBy(pp => pp.BranchName).OrderBy(p => p.DepartmentName).OrderByDescending(pp => pp.OrderByDate);
                        result = lstGift.ToList();
                        break;

                    case "BC_08":
                        var lstBC_08 = new List <BC06_DTO>();
                        var groupPGD = data.GroupBy(g => new { g.SUBBRID, GifiId = g.Gift.Id }).Select(s => new
                        {
                            SUBBRID = s.Key.SUBBRID,
                            GifiId  = s.Key.GifiId,
                            Amount  = s.Count(),
                            Balance = s.Sum(f => f.BALANCE)
                        }).ToList();
                        groupPGD.ForEach(code =>
                        {
                            var depBC08    = organization.FirstOrDefault(f => f.Code == code.SUBBRID);
                            var branchBC08 = depBC08.ManageCode == "CN" ? depBC08 : organization.FirstOrDefault(f => f.Id == depBC08?.ParentId);
                            var giftBC08   = gifts.FirstOrDefault(f => f.Id == code.GifiId);
                            var save       = new BC06_DTO
                            {
                                BranchName     = branchBC08.Name,
                                DepartmentName = depBC08.Name,
                                SoDu           = code.Balance,
                                SoLuong        = code.Amount.ToString(),
                                GiaTriQuaTang  = (giftBC08.Price * code.Amount),
                                GiftCode       = giftBC08.Code,
                                GiftName       = giftBC08.Name,
                                GhiChu         = ""
                            };
                            lstBC_08.Add(save);
                        });
                        lstBC_08 = lstBC_08.OrderBy(pp => pp.BranchName).OrderBy(p => p.DepartmentName).ToList();
                        result   = lstBC_08.ToList();
                        break;

                    default:
                        break;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            });
            return(result);
        }
Example #25
0
        public List <BC06_DTO> GetDataReport09(ClaimsPrincipal principal, string productId, string idPromotion, string idGiftStore, string idGiftUse, string idBranch, string idDepartment, string fromDate, string toDate)
        {
            var result = new List <BC06_DTO>();

            SessionManager.DoWork(ss =>
            {
                try
                {
                    var _fromDate = DateTime.ParseExact(fromDate + " 00:00:00,000", "yyyy-MM-dd HH:mm:ss,fff",
                                                        System.Globalization.CultureInfo.InvariantCulture);
                    var _toDate = DateTime.ParseExact(toDate + " 00:00:00,000", "yyyy-MM-dd HH:mm:ss,fff",
                                                      System.Globalization.CultureInfo.InvariantCulture);
                    //var _toDate = Convert.ToDateTime(DateTime.ParseExact(toDate, "dd-MM-yyyy", CultureInfo.InvariantCulture));
                    var userinfo     = ContextProvider.GetUserInfo(principal);
                    var promotions   = ss.Query <Promotion>().ToList();
                    var organization = ss.Query <Organization>().ToList();
                    var branchs      = organization.Where(w => w.ManageCode == "CN").ToList();
                    var dept         = organization.Where(w => w.ManageCode == "PGD").ToList();
                    var gifts        = ss.Query <Gift>().ToList();
                    var data         = ss.Query <CustomerGift>().Where(s => s.Status == 2 && s.CREATEDDATE <= _toDate.AddDays(1) && s.CREATEDDATE >= _fromDate).ToList();
                    if (!string.IsNullOrEmpty(idPromotion))
                    {
                        data = data.Where(s => s.Promotion.Id == new Guid(idPromotion)).ToList();
                    }
                    if (!string.IsNullOrEmpty(idDepartment))
                    {
                        var dep = dept.FirstOrDefault(w => w.Id == new Guid(idDepartment));
                        data    = data.Where(s => s.SUBBRID == dep.Code).ToList();
                    }
                    if (!string.IsNullOrEmpty(idBranch))
                    {
                        var branch = branchs.FirstOrDefault(w => w.Id == new Guid(idBranch));
                        data       = data.Where(s => s.BRANCHID == branch.Code).ToList();
                    }
                    if (!string.IsNullOrEmpty(idGiftStore))
                    {
                        data = data.Where(s => s.Gift.Id == new Guid(idGiftStore)).ToList();
                    }
                    if (!string.IsNullOrEmpty(idGiftUse))
                    {
                        data = data.Where(s => s.Gift.Id == new Guid(idGiftUse)).ToList();
                    }
                    if (userinfo.OrganizationCode != "QLBH" && userinfo.UserName != "admin" && userinfo.UserName != "nva")
                    {
                        //Nếu là LD CN/PGD
                        if (userinfo.Position.IsLeader)
                        {
                            data = data.Where(s => s.SUBBRID == userinfo.Organization.Code).ToList();
                        }
                        else//CV CN/PGD
                        {
                            data = data.Where(s => s.CREATEDBy == userinfo.Id).ToList();
                        }
                    }
                    switch (productId.ToUpper())
                    {
                    case "BC_09":
                        var lstBC_09 = new List <BC06_DTO>();
                        var groupPGD = data.GroupBy(g => new { g.SUBBRID, PromotionId = g.Promotion.Id, GiftId = g.Gift.Id }).Select(s => new
                        {
                            SUBBRID     = s.Key.SUBBRID,
                            GiftId      = s.Key.GiftId,
                            PromotionId = s.Key.PromotionId,
                            NumGift     = s.Sum(f => f.NumGift)
                        }).ToList();
                        var idGifts      = groupPGD.Select(s => s.GiftId).ToList();
                        var idPromotions = groupPGD.Select(s => s.PromotionId).ToList();
                        var tranfsDetail = ss.Query <TransferDetail>().Where(w => idPromotions.Contains(w.ReceivingPromotion ?? Guid.NewGuid()) && idGifts.Contains(w.GiftId)).ToList();
                        groupPGD.ForEach(code =>
                        {
                            var depBC09  = organization.FirstOrDefault(f => f.Code == code.SUBBRID);
                            var giftBC09 = gifts.FirstOrDefault(f => f.Id == code.GiftId);
                            var slPB     = tranfsDetail.Where(f => f.ReceivingDepartment == depBC09.Id && f.GiftId == code.GiftId && f.ReceivingPromotion == code.PromotionId && f.TransferGift.Status == 2).ToList().Sum(s => s.Amount);
                            var save     = new BC06_DTO
                            {
                                DepartmentName = depBC09.Name,
                                GiftCode       = giftBC09.Code,
                                GiftName       = giftBC09.Name,
                                GiaTri         = giftBC09.Price,
                                SoLuongNhapKho = slPB.ToString(),
                                SoLuongSuDung  = code.NumGift.ToString(),
                                SoLuongCuoiKy  = (slPB - code.NumGift).ToString(),
                                //ChenhLech = (slPB - code.NumGift).ToString(),
                                ThanhTien = (giftBC09.Price * (slPB - code.NumGift)),
                                GhiChu    = ""
                            };
                            lstBC_09.Add(save);
                        });
                        lstBC_09 = lstBC_09.OrderBy(pp => pp.BranchName).OrderBy(p => p.DepartmentName).ToList();
                        result   = lstBC_09.ToList();
                        break;

                    default:
                        break;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            });
            return(result);
        }
Example #26
0
        public List <StoreDTO> GetDataReportInventory(ClaimsPrincipal principal, string productId, string idPromotion, string toDate)
        {
            var result   = new List <StoreDTO>();
            var userinfo = ContextProvider.GetUserInfo(principal);

            SessionManager.DoWork(ss =>
            {
                try
                {
                    var _toDate = DateTime.ParseExact(toDate.Replace("-", "/") + " 23:59:59,000", "dd/MM/yyyy HH:mm:ss,fff",
                                                      System.Globalization.CultureInfo.InvariantCulture);
                    var lstPromotions = ss.Query <Promotion>().Where(w => w.CreatedDate <= _toDate && w.Status == 2).ToList();
                    if (!string.IsNullOrEmpty(idPromotion))
                    {
                        lstPromotions = lstPromotions.Where(n => n.Id == Guid.Parse(idPromotion)).ToList();
                    }
                    if (userinfo.OrganizationCode != "QLBH" && userinfo.UserName != "admin" && userinfo.UserName != "nva")
                    {
                        //Nếu là LD CN/PGD
                        if (userinfo.Position.IsLeader)
                        {
                            lstPromotions = lstPromotions.Where(s => s.NguoiDuyet == userinfo.Organization.Id).ToList();
                        }
                        else//CV CN/PGD
                        {
                            lstPromotions = lstPromotions.Where(s => s.CreatedBy == userinfo.Id).ToList();
                        }
                    }
                    var idPromotions     = lstPromotions.Select(s => s.Id).ToList();
                    var idGiftPromotions = lstPromotions.Select(s => s.GiftPromotionId).ToList();
                    var giftPromotions   = ss.Query <GiftPromotion>().Where(s => idGiftPromotions.Contains(s.GiftPromotionId)).ToList();

                    var lstGiftsId      = giftPromotions.Select(s => s.GiftId).ToList();
                    var gifts           = ss.Query <Gift>().Where(s => lstGiftsId.Contains(s.Id)).ToList();
                    var transferGift    = ss.Query <TransferGift>().Where(s => s.Status == 2).ToList();
                    var transferDetails = ss.Query <TransferDetail>().Where(s => lstGiftsId.Contains(s.GiftId)).ToList();
                    var stores          = ss.Query <Store>().Where(s => lstGiftsId.Contains(s.GiftId)).ToList();


                    #region SL Nhap kho
                    var idTranNK    = transferGift.Where(w => w.Product.Id.ToString().ToUpper() == Constants.PARAM_NHAP_KHO && w.Status == 2).Select(s => s.Id);
                    var gbNKDetails = transferDetails.Where(s => idTranNK.Contains(s.TransferGift.Id)).GroupBy(g => new { g.GiftId, g.ReceivingDepartment, productId }).Select(s => new
                    {
                        s.Key.GiftId,
                        DepartmentId = s.Key.ReceivingDepartment,
                        Total        = s.Sum(t => t.Amount)
                    }).ToList();
                    #endregion

                    #region SL Xuất kho
                    var idTranXK    = transferGift.Where(w => w.Product.Id.ToString().ToUpper() == Constants.PARAM_XUAT_KHO && w.Status == 2).Select(s => s.Id);
                    var gbXKDetails = transferDetails.Where(s => idTranXK.Contains(s.TransferGift.Id)).GroupBy(g => new { g.GiftId, g.ReceivingDepartment, productId }).Select(s => new
                    {
                        s.Key.GiftId,
                        DepartmentId = s.Key.ReceivingDepartment,
                        Total        = s.Sum(t => t.Amount)
                    }).ToList();
                    #endregion

                    #region SL Dieu chuyen ngang
                    var idTranDCN    = transferGift.Where(w => w.Product.Id.ToString().ToUpper() == Constants.PARAM_DIEU_CHUYEN_NGANG && w.Status == 2).Select(s => s.Id);
                    var gbDCNDetails = transferDetails.Where(s => idTranDCN.Contains(s.TransferGift.Id)).GroupBy(g => new { g.GiftId, g.ReceivingDepartment, productId }).Select(s => new
                    {
                        s.Key.GiftId,
                        DepartmentId = s.Key.ReceivingDepartment,
                        Total        = s.Sum(t => t.Amount)
                    }).ToList();
                    #endregion

                    #region SL Dieu chuyen noi bo
                    var idTranDCNB    = transferGift.Where(w => w.Product.Id.ToString().ToUpper() == Constants.PARAM_DIEU_CHUYEN_NOI_BO && w.Status == 2).Select(s => s.Id);
                    var gbDCNBDetails = transferDetails.Where(s => idTranDCNB.Contains(s.TransferGift.Id)).GroupBy(g => new { g.GiftId, g.ReceivingDepartment, productId }).Select(s => new
                    {
                        s.Key.GiftId,
                        DepartmentId = s.Key.ReceivingDepartment,
                        Total        = s.Sum(t => t.Amount)
                    }).ToList();
                    #endregion

                    #region SL Phan Bo
                    var idTranPBo    = transferGift.Where(w => w.Product.Id.ToString().ToUpper() == Constants.PARAM_PHAN_BO && w.Status == 2).Select(s => s.Id);
                    var gbPBoDetails = transferDetails.Where(s => idTranPBo.Contains(s.TransferGift.Id)).GroupBy(g => new { g.GiftId, g.ReceivingDepartment, productId }).Select(s => new
                    {
                        s.Key.GiftId,
                        DepartmentId = s.Key.ReceivingDepartment,
                        Total        = s.Sum(t => t.Amount)
                    }).ToList();
                    #endregion

                    //So luong ton kho
                    var groupByStores = stores.GroupBy(g => new { g.GiftId, g.DepartmentId }).Select(s => new { s.Key.GiftId, s.Key.DepartmentId, Total = s.Sum(t => t.Amount), }).ToList();
                    var lstOrgan      = ss.Query <Organization>().ToList();
                    groupByStores.ForEach(store =>
                    {
                        var amountTotal       = gbNKDetails.Where(w => w.GiftId == store.GiftId && w.DepartmentId == store.DepartmentId).Sum(s => s.Total);
                        var amountAttribution = gbPBoDetails.Where(w => w.GiftId == store.GiftId && w.DepartmentId == store.DepartmentId).Sum(s => s.Total);
                        //gbDCNDetails.Where(w => w.GiftId == store.GiftId && w.DepartmentId == store.DepartmentId).Sum(s => s.Total)
                        //+ gbDCNBDetails.Where(w => w.GiftId == store.GiftId && w.DepartmentId == store.DepartmentId).Sum(s => s.Total);
                        var depCode  = ContextProvider.GetOrganizationCode(lstOrgan, store.DepartmentId);
                        var saveItem = new StoreDTO
                        {
                            GiftId            = store.GiftId,
                            GiftName          = ContextProvider.GiftName(gifts, store.GiftId),
                            GiftCode          = ContextProvider.GiftCode(gifts, store.GiftId),
                            Price             = (ContextProvider.GiftPrice(gifts, store.GiftId) * store.Total).ToString("N", CultureInfo.CurrentCulture),
                            DepartmentId      = store.DepartmentId,
                            DepartmentName    = ContextProvider.GetOrganizationName(lstOrgan, store.DepartmentId),
                            AmountInventory   = store.Total,//amountTotal - amountAttribution,
                            AmountUse         = depCode == "QLBH" ? 0 : amountAttribution - amountTotal,
                            AmountAttribution = depCode == "QLBH" ? 0 : amountAttribution
                        };
                        if (!string.IsNullOrEmpty(saveItem.GiftCode))
                        {
                            result.Add(saveItem);
                        }
                    });
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            });
            return(result);
        }
        public string TangQuaKhachHangQuyDoi(CustomerDTO obj, string promotionId, ClaimsPrincipal principal)
        {
            var result       = string.Empty;
            var _promotionId = new Guid(promotionId);

            try
            {
                var userinfo = ContextProvider.GetUserInfo(principal);
                SessionManager.DoWork(ss =>
                {
                    var lst       = obj.QuaTangKH.ToList();
                    var idGifts   = lst.Select(s => Guid.Parse(s.GiftId)).ToList();
                    var gifts     = ss.Query <Gift>().Where(s => idGifts.Contains(s.Id)).ToList();
                    var promotion = ss.Query <Promotion>().SingleOrDefault(s => s.Id == _promotionId);

                    if (CheckMaxGiftInDay(_promotionId, promotion.MaxGiftInDay))
                    {
                        var parentId = Guid.NewGuid();
                        lst.ForEach(itm =>
                        {
                            if (CheckMaxGiftWithCustomer(promotion.MaxGiftWithCustomer, _promotionId, obj.Acctno, itm.NumEdit))
                            {
                                var store = ss.Query <Store>().FirstOrDefault(s => s.DepartmentId == userinfo.OrganizationId && s.PromotionId == _promotionId && s.GiftId == Guid.Parse(itm.GiftId));
                                if (store != null && store.Amount >= itm.NumEdit)
                                {
                                    var _productId = new Guid(Constants.ID_PRODUCT_TANG_QUA_KHACH_HANG);
                                    var product    = ss.Get <Product>(_productId);
                                    var stage      = ss.Query <Stage>().SingleOrDefault(p => p.ProductId == product.Id && p.PositionId == userinfo.Position.Id && p.Name == Constants.GUI_DUYET);
                                    if (stage != null)
                                    {
                                        itm.Error = Constants.GUI_DUYET_THANH_CONG;
                                    }
                                    else
                                    {
                                        itm.Error = "Chức năng này chỉ dành cho GDV";
                                    }
                                }
                                else
                                {
                                    itm.Error = "Số lượng quà trong kho không đủ, xin hãy kiểm tra lại";
                                }
                            }
                            else
                            {
                                itm.Error = "Mỗi khách hàng không được nhận quá số lượng: " + promotion.MaxGiftWithCustomer;
                            }
                        });
                        if (lst.Any(a => a.Error != Constants.GUI_DUYET_THANH_CONG))
                        {
                            result = lst.FirstOrDefault(f => f.Error != Constants.GUI_DUYET_THANH_CONG).Error;
                        }
                        else
                        {
                            lst.ForEach(itm =>
                            {
                                var newCus         = new CustomerGift();
                                newCus.Id          = new Guid();
                                newCus.USERID      = userinfo.Id;
                                newCus.Gift        = gifts.FirstOrDefault(f => f.Id == Guid.Parse(itm.GiftId));
                                newCus.Status      = (int)ContextProvider.statusTransfer.Initialize;
                                newCus.Promotion   = promotion;
                                newCus.CREATEDBy   = userinfo.Id;
                                newCus.CREATEDDATE = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture);
                                newCus.NumGift     = itm.NumEdit;
                                newCus.PhanHe      = obj.PhanHe;
                                newCus.Acctno      = obj.Acctno;
                                newCus.TENLOAIHINH = obj.TENLOAIHINH;
                                newCus.CusName     = obj.CusName;
                                newCus.CusId       = obj.CusId;
                                newCus.TERM        = obj.TERM;
                                newCus.TERMCD      = obj.TERMCD;
                                newCus.BALANCE     = obj.BALANCE;
                                newCus.FRDATE      = obj.FRDATE;
                                newCus.TODATE      = obj.TODATE;
                                newCus.CHEQUENO    = obj.CHEQUENO;
                                newCus.INTRATE     = obj.INTRATE;
                                newCus.RATECD      = obj.RATECD;
                                newCus.LICENSE     = obj.LICENSE;
                                newCus.SUBBRID     = obj.SUBBRID;
                                newCus.SUBBRNAME   = obj.SUBBRNAME;
                                newCus.BRANCHID    = obj.BRANCHID;
                                newCus.BRNAME      = obj.BRNAME;
                                newCus.ACTYPE      = obj.ACTYPE;
                                newCus.CCYCD       = obj.CCYCD;
                                newCus.ParentId    = parentId;
                                ss.Save(newCus);
                            });
                            var _productId = new Guid(Constants.ID_PRODUCT_TANG_QUA_KHACH_HANG);
                            var product    = ss.Get <Product>(_productId);
                            var stage      = ss.Query <Stage>().SingleOrDefault(p => p.ProductId == product.Id && p.PositionId == userinfo.Position.Id && p.Name == Constants.GUI_DUYET);
                            if (stage != null)
                            {
                                ss.Save(new CustomerGiftLog
                                {
                                    Id = new Guid(),
                                    //CustomerGift = newCus,
                                    CustomerGiftId     = parentId,
                                    AssignUserId       = userinfo.Id,
                                    AssignDeaprtmentId = userinfo.Organization.Id,
                                    Comment            = "",
                                    Status             = (int)ContextProvider.statusTransfer.Initialize,
                                    UpdateDate         = DateTime.ParseExact(DateTime.Now.ToString("u"), "u", CultureInfo.InvariantCulture),
                                    StageId            = stage.Id
                                });
                            }
                            result = Constants.GUI_DUYET_THANH_CONG;
                        }
                    }
                    else
                    {
                        result = "Mỗi ngày không được tặng quá " + promotion.MaxGiftInDay + " quà tặng";
                    }
                });

                return(result);
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
        public dynamic LstKhachHangNhanQua(string phanhe, string acctno, string promotionId, int pageNo, int pageSize, ClaimsPrincipal principal)
        {
            dynamic result = new ExpandoObject();

            try
            {
                SessionManager.DoWork(s =>
                {
                    var userinfo     = ContextProvider.GetUserInfo(principal);
                    var typeUser     = ContextProvider.CheckPermission(userinfo.PermisionId);
                    var lstPromotion = s.Query <Promotion>().ToList();
                    var lstUser      = s.Query <User>().ToList();
                    var idUsers      = lstUser.Where(w => w.Organization.Id == userinfo.Organization.Id).Select(u => u.Id).ToList();
                    var list         = s.Query <CustomerGift>().Where(w => (idUsers.Contains(w.USERID) && typeUser != 1 && typeUser != 2) || typeUser == 1 || typeUser == 2).ToList();
                    if (!string.IsNullOrEmpty(phanhe))
                    {
                        list = list.Where(p => p.PhanHe == phanhe).ToList();
                    }

                    if (!string.IsNullOrEmpty(acctno))
                    {
                        list = list.Where(p => p.Acctno == acctno).ToList();
                    }

                    if (!string.IsNullOrEmpty(promotionId))
                    {
                        list = list.Where(p => p.Promotion.Id == new Guid(promotionId)).ToList();
                    }
                    var cus = list.GroupBy(p => new
                    {
                        PromotionId = p.Promotion.Id,
                        p.ParentId,
                        p.CusId,
                        p.PhanHe,
                        p.Acctno,
                        p.CusName,
                        p.TERM,
                        p.TERMCD,
                        p.BALANCE,
                        p.CCYCD,
                        p.FRDATE,
                        p.NgayDuyet,
                        p.NguoiDuyet,
                        p.Status,
                        p.CREATEDBy,
                        p.CREATEDDATE
                    }).Select(p => new
                    {
                        Id = p.Key.ParentId,
                        p.Key.CusId,
                        p.Key.PhanHe,
                        p.Key.Acctno,
                        p.Key.PromotionId,
                        PromotionName = ContextProvider.GetPromotionName(lstPromotion, p.Key.PromotionId),
                        NumGift       = p.Sum(t => t.NumGift),
                        p.Key.CusName,
                        p.Key.TERM,
                        p.Key.TERMCD,
                        p.Key.BALANCE,
                        p.Key.CCYCD,
                        FRDATE     = ContextProvider.GetConvertDatetime(p.Key.FRDATE),
                        NgayDuyet  = ContextProvider.GetConvertDatetime(p.Key.NgayDuyet),
                        NguoiDuyet = ContextProvider.GetFullName(lstUser, p.Key.NguoiDuyet),
                        p.Key.Status,
                        CREATEDBy   = ContextProvider.GetFullName(lstUser, p.Key.CREATEDBy),
                        CREATEDDATE = ContextProvider.GetConvertDatetime(p.Key.CREATEDDATE),
                    }).ToList();

                    result.Cus       = cus.Skip((pageNo - 1) * pageSize).Take(pageSize).ToList();
                    var total        = cus.Count();
                    result.TotalPage = total % pageSize == 0 ? total / pageSize : total / pageSize + 1;
                });
            }
            catch (Exception)
            {
                throw;
            }
            return(result);
        }
        public dynamic Check(string accNo, string json, string phanhe, ClaimsPrincipal principal)
        {
            dynamic result = new ExpandoObject();

            try
            {
                var lstPromotion = new List <PromotionOut>();
                var lstCusGift   = new List <CustomerGift>();
                var cusGift      = new CustomerGift();

                var userinfo = ContextProvider.GetUserInfo(principal);

                var infoCusFromCoreBanking = ConvertJson(json);
                //var infoCusFromCoreBanking = JsonConvert.DeserializeObject<CustomerDTO>(json);

                SessionManager.DoWork(ss =>
                {
                    var lstUser      = ss.Query <User>().ToList();
                    var now          = DateTime.Now;
                    var timeNow      = DateTime.ParseExact(new DateTime(now.Year, now.Month, now.Day, 0, 0, 0).ToString("yyyy-MM-dd hh:mm:ss tt"), "yyyy-MM-dd hh:mm:ss tt", CultureInfo.InvariantCulture);
                    var idPromotions = ss.Query <Store>().Where(s => s.DepartmentId == userinfo.Organization.Id && s.Amount > 0).Select(s => s.PromotionId).ToList();
                    if (idPromotions.Count == 0)
                    {
                        result.MesError = "Hiện không triển khai chương trình khuyến mãi nào.";
                    }
                    var promotions = ss.Query <Promotion>().Where(s =>
                                                                  s.StartDate <= timeNow &&
                                                                  s.FinishDate >= timeNow &&
                                                                  s.Status == 2).ToList();
                    if (promotions.Count == 0)
                    {
                        result.MesError = "Hiện không triển khai chương trình khuyến mãi nào.";
                    }
                    else
                    {
                        var status = false;
                        foreach (var itm in promotions)
                        {
                            var quaTangKH       = new QuaTangKH();
                            var promotionIdUsed = new Guid();

                            cusGift = ss.Query <CustomerGift>().SingleOrDefault(s => s.Acctno == accNo && s.Promotion.Id == itm.Id && s.PhanHe == phanhe);
                            if (cusGift != null)
                            {
                                status = true;
                                lstCusGift.Add(cusGift);

                                var gifts       = ss.Query <Gift>().Where(s => s.Id == cusGift.Gift.Id).ToList();
                                promotionIdUsed = cusGift.Promotion.Id;

                                quaTangKH.GiftId   = cusGift.Gift.Id.ToString();
                                quaTangKH.GiftName = ContextProvider.GiftName(gifts, cusGift.Gift.Id);
                                quaTangKH.Num      = cusGift.NumGift;

                                var lstQuaTangKH = new List <QuaTangKH>();
                                lstQuaTangKH.Add(quaTangKH);

                                var promotionOut = new PromotionOut
                                {
                                    Id          = promotionIdUsed.ToString(),
                                    Code        = ContextProvider.GetPromotionCode(promotions, promotionIdUsed),
                                    Name        = ContextProvider.GetPromotionName(promotions, promotionIdUsed),
                                    label       = ContextProvider.GetPromotionCode(promotions, promotionIdUsed),
                                    value       = promotionIdUsed.ToString(),
                                    FlagTangQua = cusGift.Status,
                                    QuaTangKH   = lstQuaTangKH
                                };
                                lstPromotion.Add(promotionOut);
                            }
                            if (idPromotions.Any(a => a == itm.Id))
                            {
                                var idGP    = promotions.Select(s => s.GiftPromotionId).ToList();
                                var giftIds = ss.Query <GiftPromotion>().Where(s => idGP.Contains(s.GiftPromotionId)).Select(s => s.GiftId).ToList();
                                var gift    = ss.Query <Gift>().Where(s => giftIds.Contains(s.Id)).ToList();
                                if (promotionIdUsed.ToString() != Constants.GUIDE_TYPE_NULL)
                                {
                                    if (itm.Id != promotionIdUsed)
                                    {
                                        var lstQuaTangKH = new List <QuaTangKH>();

                                        if (infoCusFromCoreBanking.FRDATE >= itm.StartDate && infoCusFromCoreBanking.FRDATE <= itm.FinishDate)
                                        {
                                            var configPromotion = JsonConvert.DeserializeObject <List <ConfigPromotion> >(itm.ConfigPromotion.ToString());
                                            foreach (var itmConfigPromotion in configPromotion)
                                            {
                                                if (string.IsNullOrEmpty(phanhe))
                                                {
                                                    phanhe = "DEFAULT";
                                                }
                                                if (infoCusFromCoreBanking.TERM >= decimal.Parse(itmConfigPromotion.kyhantoithieu) &&
                                                    infoCusFromCoreBanking.BALANCE >= decimal.Parse(itmConfigPromotion.sodutoithieu) &&
                                                    itmConfigPromotion.phanhe.ToUpper() == phanhe.ToUpper())
                                                {
                                                    infoCusFromCoreBanking.PhanHe = phanhe.ToUpper();

                                                    var dataGift = itmConfigPromotion.dataKhaiBaoQuaTang;
                                                    if (dataGift == null)
                                                    {
                                                        result.MesError = "Chưa thiết lập nguyên tắc tặng quà.";
                                                    }
                                                    else
                                                    {
                                                        lstQuaTangKH = CreateLstGift(dataGift, gift, infoCusFromCoreBanking);
                                                    }
                                                }
                                            }
                                        }
                                        if (lstQuaTangKH.Count > 0)
                                        {
                                            lstPromotion.Add(CreateCardPromotion(itm, lstQuaTangKH));
                                        }
                                    }
                                }

                                else
                                {
                                    var lstQuaTangKH = new List <QuaTangKH>();

                                    if (infoCusFromCoreBanking.FRDATE >= itm.StartDate && infoCusFromCoreBanking.FRDATE <= itm.FinishDate)
                                    {
                                        var configPromotion = JsonConvert.DeserializeObject <List <ConfigPromotion> >(itm.ConfigPromotion.ToString());
                                        foreach (var itmConfigPromotion in configPromotion)
                                        {
                                            if (string.IsNullOrEmpty(phanhe))
                                            {
                                                phanhe = "DEFAULT";
                                            }
                                            if (infoCusFromCoreBanking.TERM >= decimal.Parse(itmConfigPromotion.kyhantoithieu) &&
                                                infoCusFromCoreBanking.BALANCE >= decimal.Parse(itmConfigPromotion.sodutoithieu) &&
                                                itmConfigPromotion.phanhe.ToUpper() == phanhe.ToUpper())
                                            {
                                                infoCusFromCoreBanking.PhanHe = phanhe.ToUpper();

                                                var dataGift = itmConfigPromotion.dataKhaiBaoQuaTang;
                                                if (dataGift == null)
                                                {
                                                    result.MesError = "Chưa thiết lập nguyên tắc tặng quà.";
                                                }

                                                else
                                                {
                                                    lstQuaTangKH = CreateLstGift(dataGift, gift, infoCusFromCoreBanking);
                                                }
                                            }
                                        }
                                    }
                                    if (lstQuaTangKH.Count > 0)
                                    {
                                        lstPromotion.Add(CreateCardPromotion(itm, lstQuaTangKH));
                                    }
                                }
                            }
                        }

                        if (lstCusGift.Count == 0)
                        {
                            lstCusGift.Add(infoCusFromCoreBanking);
                        }

                        result.InfoCus = LstCustomer(lstCusGift, phanhe, lstUser);

                        result.LstPromotion = lstPromotion.ToList().OrderByDescending(o => o.CountPrice).ToList();
                        result.Status       = status;
                    }
                });
            }
            catch (Exception ex)
            {
                throw;
            }
            return(result);
        }