コード例 #1
0
        public IActionResult SetCommissionRate(CommissionViewModel commissionViewModel)
        {
            Guid             currentUserGuid = Guid.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "guid").Value);
            QrcodeSellerList guid            = sellerContext.QrcodeSellerList.First(s => s.SellerId == commissionViewModel.SellerID);

            //权限验证
            if (IsChild(guid.UserGuid, currentUserGuid) && (sellerContext.Commission.FirstOrDefault(x => x.UserGuid == currentUserGuid)?.Rate ?? 0.5) >= commissionViewModel.Rate)
            {
                Commission commission = new Commission()
                {
                    Mtime     = DateTime.Now,
                    Rate      = commissionViewModel.Rate,
                    SellerId  = commissionViewModel.SellerID,
                    UserGuid  = guid.UserGuid,
                    CreatedBy = currentUserGuid,
                };
                sellerContext.Commission.Add(commission);
                sellerContext.SaveChanges();
                return(Ok());
            }
            else
            {
                return(Forbid());
            }
        }
コード例 #2
0
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var commissionResult = await _context.Commission.SingleOrDefaultAsync(commission => commission.CommissionID == id);

            if (commissionResult == null)
            {
                return(NotFound());
            }

            CommissionViewModel model = CreateCommissionViewModel(commissionResult);

            var members = await _context.CommissionMember
                          .Where(commissionMember => commissionMember.CommissionID == commissionResult.CommissionID && commissionMember.Status == CommisionMemberStatus.Lid)
                          .ToListAsync();

            foreach (var member in members)
            {
                model.CommissionMembers.Add(member);
                model.Members
                .Add(_context.ApplicationUser
                     .Find(member.ApplicationUserID));
            }

            return(View(model));
        }
コード例 #3
0
        public async Task <IActionResult> Index(IFormFile commissionReportFile, [FromServices] IHostingEnvironment hostingEnvironment)
        {
            var model = new CommissionViewModel();

            if (commissionReportFile == null)
            {
                return(View(model));
            }

            string fileName    = $"{hostingEnvironment.WebRootPath}\\files\\";
            var    commissions = new List <CommissionDto>();

            try
            {
                commissions = await CommissionModelHelper.ReadCommision(commissionReportFile, fileName, _userCompanyId);
            }
            catch (Exception ex)
            {
                model.ResultModel.Success = false;
                model.ResultModel.Message = ex.Message;
                return(View(model));
            }


            return(View(await _modelService.AddRange(commissions, _userCompanyId)));
        }
コード例 #4
0
        public async Task <IActionResult> Approval()
        {
            var commissionsResult = await _context.Commission.ToListAsync();

            var commissionViewModels = new List <CommissionViewModel>();

            foreach (var commissionItem in commissionsResult)
            {
                CommissionViewModel model = CreateCommissionViewModel(commissionItem);

                var commissionMembersResult = await _context.CommissionMember
                                              .Where(comissionMember => comissionMember.CommissionID == commissionItem.CommissionID && comissionMember.Status == CommisionMemberStatus.Interesse)
                                              .ToListAsync();

                // Skip commissions who don't have any members to approve
                if (commissionMembersResult.Where(comissionMember => comissionMember.Status == CommisionMemberStatus.Interesse).Count() > 0)
                {
                    foreach (var member in commissionMembersResult)
                    {
                        ApplicationUser applicationUser = _context.ApplicationUser.Find(member.ApplicationUserID);

                        // Don't make it possible to approve members who haven't been approved yet as a user
                        if (applicationUser.Status == Status.Lid)
                        {
                            model.Members.Add(applicationUser);
                        }
                        model.CommissionMembers.Add(member);
                    }

                    commissionViewModels.Add(model);
                }
            }

            return(View(commissionViewModels));
        }
コード例 #5
0
        public async Task <IActionResult> Edit(int id, CommissionViewModel model)
        {
            if (id != model.CommissionID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(CreateCommission(model));
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CommissionExists(model.CommissionID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction("Index"));
            }
            return(View(model));
        }
コード例 #6
0
        public IActionResult Index()
        {
            var model = new CommissionViewModel();

            model.ResultModel = null;

            return(View(model));
        }
コード例 #7
0
 private Commission CreateCommission(CommissionViewModel model)
 {
     return(new Commission
     {
         CommissionID = model.CommissionID,
         Name = model.Name,
         Description = model.Description,
     });
 }
コード例 #8
0
        public ActionResult Editar(string id)
        {
            CommissionBL oBL    = new CommissionBL();
            int          pIntID = 0;

            int.TryParse(id, out pIntID);
            CommissionViewModel pCommissionViewModel = oBL.Obtener(pIntID);

            return(View(pCommissionViewModel));
        }
コード例 #9
0
ファイル: CommissionBL.cs プロジェクト: alonsodev/SSR
        public void Modificar(CommissionViewModel pCommissionViewModel)
        {
            commissions ocommissions = oRepositorio.FindById(pCommissionViewModel.commission_id);

            ocommissions.name = pCommissionViewModel.name;

            ocommissions.user_id_modified = pCommissionViewModel.user_id_modified;

            ocommissions.date_modified = DateTime.Now;
            oRepositorio.Update(ocommissions);
            oUnitOfWork.SaveChanges();
        }
コード例 #10
0
        public async Task <IActionResult> Create(CommissionViewModel model)
        {
            if (ModelState.IsValid)
            {
                _context.Add(CreateCommission(model));
                await _context.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(model));
        }
コード例 #11
0
ファイル: CommissionBL.cs プロジェクト: alonsodev/SSR
        public void Agregar(CommissionViewModel pCommissionViewModel)
        {
            commissions ocommissions = new commissions
            {
                commission_id   = 0,
                name            = pCommissionViewModel.name,
                date_created    = DateTime.Now,
                user_id_created = pCommissionViewModel.user_id_created
            };

            oRepositorio.Add(ocommissions);
            oUnitOfWork.SaveChanges();
        }
コード例 #12
0
        public ActionResult Editar([Bind(Include = "commission_id,name")] CommissionViewModel pCommissionViewModel)
        {
            // TODO: Add insert logic here

            if (pCommissionViewModel == null)
            {
                return(HttpNotFound());
            }
            CommissionBL oCommissionBL = new CommissionBL();

            pCommissionViewModel.user_id_modified = AuthorizeUserAttribute.UsuarioLogeado().user_id;
            oCommissionBL.Modificar(pCommissionViewModel);
            return(RedirectToAction("Index"));
        }
コード例 #13
0
        public async Task <CommissionViewModel> AddRange(List <CommissionDto> commissions, int companyId)
        {
            var model = new CommissionViewModel();

            try
            {
                if (commissions?.Count == 0)
                {
                    model.ResultModel.Success = false;
                    model.ResultModel.Message = "Hiç Kayıt Bulunamadı !";

                    return(model);
                }

                var commissionResult = await _service.AddRangeAsync(_mapper.Map <IEnumerable <Commission> >(commissions));

                if (commissionResult.Any())
                {
                    IEnumerable <Order> orders = null;

                    foreach (var item in commissionResult)
                    {
                        orders = await _orderService.Where(o => o.CompanyId == companyId && o.OrderNumber == item.OrderNumber);

                        if (orders != null)
                        {
                            foreach (var orderItem in orders)
                            {
                                orderItem.CommissionId     = item.Id;
                                orderItem.CommissionStatus = true;

                                _orderService.Update(orderItem);
                            }
                        }
                    }
                }

                model.ResultModel.Success = true;
                model.ResultModel.Message = $"{commissions.Count} adet komisyon detayı başarılı bir şekilde yüklendi.";

                return(model);
            }
            catch (Exception ex)
            {
                model.ResultModel.Success = false;
                model.ResultModel.Message = $"HATA ! - HATA MESAJI : {ex.Message}";
                return(model);
            }
        }
コード例 #14
0
        public ActionResult Crear([Bind(Include = "commission_id,name")] CommissionViewModel pCommissionViewModel)
        {
            // TODO: Add insert logic here

            if (pCommissionViewModel == null)
            {
                return(HttpNotFound());
            }
            pCommissionViewModel.commission_id   = 0;
            pCommissionViewModel.user_id_created = AuthorizeUserAttribute.UsuarioLogeado().user_id;

            CommissionBL oBL = new CommissionBL();

            oBL.Agregar(pCommissionViewModel);
            return(RedirectToAction("Index"));
        }
コード例 #15
0
        public async Task <IActionResult> Update(Guid commissionId, [FromBody] CommissionViewModel commissionVM)
        {
            try
            {
                var userId = Guid.Parse(_httpContextAccessor.HttpContext.User.FindFirstValue("NameId"));

                var commissionDto = _mapper.Map <CommissionViewModel, CommissionDto>(commissionVM);
                commissionDto.LastModificationBy = userId;
                await _commissionUseCases.Update(commissionId, commissionDto);

                return(Ok("Commission successfully updated."));
            }
            catch (KeyNotFoundException)
            {
                return(NotFound());
            }
        }
コード例 #16
0
 public void Delete(CommissionViewModel commission)
 {
     throw new NotImplementedException();
 }
コード例 #17
0
 public bool Update(CommissionViewModel commission)
 {
     return(true);
 }
コード例 #18
0
 public CommissionView(CommissionViewModel model)
 {
     InitializeComponent();
     DataContext = model;
 }
コード例 #19
0
 public bool Create(CommissionViewModel commission)
 {
     commissions.Add(commission);
     return(true);
 }
コード例 #20
0
        public CommissionCollectionViewModel GetCommissionList(CommissionCollectionViewModel model = null, int userId = -1)
        {
            if (model == null)
            {
                model = new CommissionCollectionViewModel();
            }

            // Get Commissions
            var query = (from po in _unitOfWork.GetRepository <Txn_PO>().GetQueryable(o => o.Status == 1 && model.SearchDateFrom <= o.PoDate && o.PoDate <= model.SearchDateTo)
                         join pod in _unitOfWork.GetRepository <Txn_PODetail>().GetQueryable(o => o.Status == 1) on po.PoId equals pod.PoId
                         join cd in _unitOfWork.GetRepository <Txn_CommissionDetail>().GetQueryable(o => o.Amount > 0) on pod.PoDetailId equals cd.PoDetailId
                         join p in _unitOfWork.GetRepository <Mst_Profile>().GetQueryable() on cd.ProfileId equals p.ProfileId
                         orderby po.PoDate descending

                         select new CommissionViewModel
            {
                UserId = p.UserId,
                Role = cd.Position,
                PoDetail = new PoDetailModel
                {
                    PoId = po.PoId,
                    PoNumber = po.PoNumber,
                    PoDate = po.PoDate,
                    //PoFilePath = p.PoFilePath,
                    //InvoiceFilePath = p.InvoiceFilePath,
                    CustomerName = po.CustomerName,
                    PoDetailId = pod.PoDetailId,
                    ProductName = pod.ProductName,
                    ProductBrand = pod.ProductBrand,
                    ProductType = pod.ProductType,
                    //PricePerUnit = pd.PricePerUnit,
                    //ActualPricePerUnit = pd.ActualPricePerUnit,
                    //Amount = pd.Amount,
                    TotalPrice = pod.TotalPrice,
                    //ActualTotalPrice = pd.ActualTotalPrice,
                    //Tax = pd.Tax,
                    //TransportLocation = pd.TransportLocation,
                    //TransportFee = pd.TransportFee,
                    //ParcelFee = pd.ParcelFee,
                    //ServiceFee = pd.ServiceFee,
                    //OtherFee = pd.OtherFee,
                    //CustomerLead = pd.CustomerLead,
                    //CustomerLeadPercentage = pd.CustomerLeadPercentage,
                    //TotalCost = pd.TotalCost,
                    //Profit = pd.Profit,
                    //ProfitPercentage = pd.ProfitPercentage,
                    //Remark = pd.Remark,
                    //Status = pd.Status,
                },
                CommissionDetail = new CommissionDetailModel
                {
                    CommissionDetailId = cd.CommissionDetailId,
                    PoDetailId = cd.PoDetailId,
                    ProfileId = cd.ProfileId,
                    Position = cd.Position,
                    Rate = cd.Rate,
                    Amount = cd.Amount,
                    WdTax = 0,
                    Total = 0,
                    Tax = 0,
                    NetTotal = 0
                }
            });

            // Set Where cause
            // -- UserId
            if (userId > 0)
            {
                query = query.Where(o => o.UserId == userId);
            }
            else if (model.SearchProfileId > 0)
            {
                query = query.Where(o => o.CommissionDetail.ProfileId == model.SearchProfileId);
            }
            // -- RoleId
            if (model.SearchRoleId >= 0)
            {
                query = query.Where(o => o.Role == model.SearchRoleId);
            }

            model.CommissionViewCollection = query.ToList();

            // Mapping Id with lookup name
            for (int i = 0; i < model.CommissionViewCollection.Count; i++)
            {
                CommissionViewModel commission = model.CommissionViewCollection[i];

                commission.RoleName = Helper.GetNameFromLookup(commission.Role, Helper.LookupPosition);

                model.CommissionViewCollection[i] = commission;
            }

            // Get Commission Detail for find the sale
            var listCommissionDetail = (from cd in _unitOfWork.GetRepository <Txn_CommissionDetail>().GetQueryable(o => o.Position == 1)
                                        join p in _unitOfWork.GetRepository <Mst_Profile>().GetQueryable() on cd.ProfileId equals p.ProfileId
                                        select new
            {
                cd.PoDetailId, p.FirstName, p.LastName
            }).ToList();

            // Calculate tax and sum tootal
            decimal sumAllTotalPrice = decimal.Zero;
            decimal sumAllCommission = decimal.Zero;
            decimal sumAllWdTax      = decimal.Zero;
            decimal sumAllTotal      = decimal.Zero;
            decimal sumAllTax        = decimal.Zero;
            decimal sumAllNetTotal   = decimal.Zero;

            List <LookupModel> lookupProductType = Helper.LookupProductType;
            decimal            tax = 0.03m;

            foreach (CommissionViewModel commission in model.CommissionViewCollection)
            {
                string   productTypeValue       = lookupProductType.FirstOrDefault(o => o.Key == commission.PoDetail.ProductType.ToString()).Value;
                string[] productTypeNameWithTax = productTypeValue.Split(new string[] { "__" }, StringSplitOptions.None);

                decimal taxPercentage = decimal.Parse(productTypeNameWithTax[1].Replace("%", ""));
                decimal wdtaxRate     = taxPercentage / 100;

                // Calculate Date
                commission.PoDetail.ProductTypeName  = productTypeNameWithTax[0];
                commission.CommissionDetail.WdTax    = commission.CommissionDetail.Amount * wdtaxRate;
                commission.CommissionDetail.Total    = commission.CommissionDetail.Amount - commission.CommissionDetail.WdTax;
                commission.CommissionDetail.Tax      = commission.CommissionDetail.Total * tax;
                commission.CommissionDetail.NetTotal = commission.CommissionDetail.Total - commission.CommissionDetail.Tax;

                // Sum Data
                sumAllTotalPrice += commission.PoDetail.TotalPrice;
                sumAllCommission += commission.CommissionDetail.Amount;
                sumAllWdTax      += commission.CommissionDetail.WdTax;
                sumAllTotal      += commission.CommissionDetail.Total;
                sumAllTax        += commission.CommissionDetail.Tax;
                sumAllNetTotal   += commission.CommissionDetail.NetTotal;

                // Set sales
                var temp = listCommissionDetail.FirstOrDefault(o => o.PoDetailId == commission.CommissionDetail.PoDetailId);
                commission.CommissionDetail.SalesName = temp.FirstName + " " + temp.LastName;
            }

            // Set Sum Data
            model.SumAllTotalPrice = sumAllTotalPrice;
            model.SumAllCommission = sumAllCommission;
            model.SumAllWdTax      = sumAllWdTax;
            model.SumAllTotal      = sumAllTotal;
            model.SumAllTax        = sumAllTax;
            model.SumAllNetTotal   = sumAllNetTotal;

            if (userId > 0 && model.CommissionViewCollection.Count > 0)
            {
                model.SearchProfileId = model.CommissionViewCollection[0].CommissionDetail.ProfileId;
            }

            return(model);
        }