public void ValidatePayedAmount(int invoiceId, double amount)
        {
            var invoice = _invoiceRepository.FirstOrDefault(x => x.Id == invoiceId);

            if (invoice == null)
            {
                throw new UserFriendlyException("Sorry but the amount can't be validated because invoice don't exist");
            }

            if (amount > invoice.BalanceDue)
            {
                throw new UserFriendlyException(String.Format("The payedAmount {0} is greatest than invoice due {1}", amount, invoice.BalanceDue));
            }

            if (amount <= 0)
            {
                throw new UserFriendlyException("the amount can't be 0 or less");
            }
        }
Esempio n. 2
0
        public string DeleteMission_admin(long taskId)
        {
            try
            {
                var task   = _userRepository.FirstOrDefault(t => t.Id == taskId && t.IsCandidate == false);
                var result = Mapper.Map <BillInfo>(task);

                if (task != null)
                {
                    _userRepository.Delete(result); return("删除成功");
                }
                else
                {
                    return("资料不存在");
                }
            }
            catch
            { return("删除失败"); }
        }
Esempio n. 3
0
        public async Task <int> AddEditCategory(string categoryName, string inputCategoryDisplayName)
        {
            var categoryWithSameName = _categoryRepository.FirstOrDefault(a => a.Name.Equals(categoryName));

            if (categoryWithSameName != null)
            {
                categoryWithSameName.Name        = categoryName;
                categoryWithSameName.DisplayName = inputCategoryDisplayName;
                return(categoryWithSameName.Id);
            }
            ;
            var id = await _categoryRepository.InsertOrUpdateAndGetIdAsync(new DatabaseEntities.Category.Entities.Category()
            {
                Name        = categoryName,
                DisplayName = inputCategoryDisplayName
            });

            return(id);
        }
Esempio n. 4
0
        private void AddOrUpdate(IEnumerable <MenuDefinition> definitions)
        {
            foreach (MenuDefinition definition in definitions)
            {
                Menu menu = _menuRepository.FirstOrDefault(t => t.Name == definition.Name);
                menu             = menu ?? new Menu();
                menu.DisplayName = definition.DisplayName;
                menu.MetaData    = definition.MetaData;
                menu.Icon        = definition.Icon;
                menu.Url         = definition.Url;
                menu.ParentId    = definition.ParentId;
                menu.Name        = definition.Name;
                menu.IsStatic    = true;

                if (menu.Id == default(int))
                {
                    var defaultactive = _settingManager.GetSettingValueForApplication <bool>(YtSettings.General.MenuDefaultActive);
                    menu.IsActive = defaultactive;
                    _levelEntityHandler.Create(menu);
                }
                else
                {
                    if (menu.ParentId == definition.ParentId)
                    {
                        _levelEntityHandler.Update(menu);
                    }
                    else
                    {
                        _levelEntityHandler.UpdateParent(menu);
                    }
                }
                //插入子集
                if (!definition.Childs.Any())
                {
                    continue;
                }
                foreach (var t in definition.Childs)
                {
                    t.ParentId = menu.Id;
                }
                AddOrUpdate(definition.Childs);
            }
        }
Esempio n. 5
0
        public PagedResultDto <PostDisplayDto> GetPostsLanding(PagedPostResultRequestDto inpt)
        {
            var query = CreateFilteredQuery(inpt);

            query = ApplySorting(query, inpt);
            var postResult = ApplyPaging(query, inpt).ToList();
            var result     = new PagedResultDto <PostDisplayDto>
            {
                Items      = ObjectMapper.Map <List <PostDisplayDto> >(postResult),
                TotalCount = query.Count(),
            };

            // Lặp trong từng bài viết lấy được
            for (int i = 0; i < result.Items.Count; i++)
            {
                // Lấy thông tin người tạo
                var creator = UserRepository.Get(result.Items[i].CreatorUserId.Value);
                if (creator != null)
                {
                    result.Items[i].Creator = ObjectMapper.Map <UserDto>(creator);
                }
                // Lấy thông tin chủ đề
                var category = PostCategoryRepository.Get(result.Items[i].PostCategoryId);
                if (category != null)
                {
                    result.Items[i].PostCategory = ObjectMapper.Map <PostCategoryDto>(category);
                }
                // Đếm sách comments
                result.Items[i].PostCommentCount = PostCommentRepository.Count(x => x.PostId == result.Items[i].Id);
                // Lấy danh sách 3 comment mới nhất
                result.Items[i].LatestSomeComments = ObjectMapper.Map <List <PostCommentDto> >(PostCommentRepository
                                                                                               .GetAllList(x => x.PostId == result.Items[i].Id).Take(3).ToList());
                // Đếm số sao
                result.Items[i].PostRatingCount = PostRatingRepository.Count(x => x.PostId == result.Items[i].Id);
                // Lấy sao mà bản thân đã đánh giá
                result.Items[i].YourRating = PostRatingRepository.FirstOrDefault(x => x.PostId == result.Items[i].Id &&
                                                                                 x.CreatorUserId == AbpSession.UserId)?.Rating ?? 0F;
                // Tính số sao trung bình
                result.Items[i].PostRatingAvrg = PostRatingRepository
                                                 .GetAllList(x => x.PostId == result.Items[i].Id).Select(x => x.Rating).DefaultIfEmpty(0).Average();
            }
            return(result);
        }
Esempio n. 6
0
        public async Task <FileDto> GetClaimsToExcel()
        {
            int countryId = GetCountryIdByCode();
            var query     = await _vendorMainRepository.GetAll().Where(p => p.CountryID.Equals(countryId))
                            .OrderByDescending(p => p.LastModificationTime)
                            .ToListAsync();

            var sub_query = await _vendorSubRepository.GetAll()
                            .Where(sv => sv.TenantId == _abpSession.TenantId)
                            .ToListAsync();


            var finalQuery = (from master in query
                              join v in sub_query on master.Id equals v.VendorID into ps
                              from y1 in ps.DefaultIfEmpty()

                              select new GVendorsListDto
            {
                SupplierCode = master.SupplierCode,
                SupplierName = master.SupplierName,
                ContactEmail = y1 == null ? "" : y1.ContactEmail,
                ContactPhone = y1 == null ? "" : y1.ContactPhone,
                ContactFax = y1 == null ? "" : y1.ContactFax,
                Address1 = y1 == null ? "" : y1.Address1,
                Address2 = y1 == null ? "" : y1.Address2,
                Address3 = y1 == null ? "" : y1.Address3,
                Location = y1 == null ? "" : y1.Location,
                RegistrationNumber = y1 == null ? "" : y1.RegistrationNumber,
                TaxRegistrationNumber = y1 == null ? "" : y1.TaxRegistrationNumber,
                SupplierAccount = y1 == null ? "" : y1.SupplierAccount,
                PaymentTerms = y1 == null ? "" : y1.PaymentTerms,
                AccountNumber = y1 == null ? "" : y1.AccountNumber,
                Type = y1 == null ? "" : y1.Type,
                Branch = y1 == null ? "" : y1.Branch,
                Bank = y1 == null ? "" : _bankRepository.FirstOrDefault(x => x.Id == y1.BankID).BankName,
                Currency = y1 == null ? "" : _currRepository.FirstOrDefault(x => x.Id == y1.CurrencyID).CountryAndCurrency
            }).ToList();

            var ListDtos = finalQuery.MapTo <List <GVendorsListDto> >();

            return(_vendorListExcelExporter.ExportToFile(ListDtos));
        }
        public async Task <TermsOfServiceInput> GetAndAssignDefaultTosAsync()
        {
            try
            {
                var roleId      = _userRoleRepository.FirstOrDefault(item => item.UserId == AbpSession.UserId).RoleId;
                var role        = _roleRepository.FirstOrDefault(item => item.Id == roleId);
                var defaultToes = await _termsOfServiceRepository.FirstOrDefaultAsync(item => item.IsDefault == true) ?? new TermsOfService();

                if (role.DisplayName.Equals("Admin"))
                {
                    return(new TermsOfServiceInput()
                    {
                        TosContent = defaultToes.TosContent
                    });
                }
                else if (role.DisplayName.Equals("TenantAdmin"))
                {
                    var tenantAdminTos = _termsOfServiceRepository.FirstOrDefault(item => item.RevicedBy.Id == AbpSession.UserId);
                    if (tenantAdminTos == null)
                    {
                        var tosId = await _termsOfServiceRepository.InsertAndGetIdAsync(SetTermObject(defaultToes.TosContent, role));

                        return(new TermsOfServiceInput()
                        {
                            TosContent = _termsOfServiceRepository.Get(tosId).TosContent
                        });
                    }
                    else
                    {
                        return(new TermsOfServiceInput()
                        {
                            TosContent = tenantAdminTos.TosContent
                        });
                    }
                }
                return(new TermsOfServiceInput());
            }
            catch (Exception ex)
            {
                throw new UserFriendlyException(ex.Message);
            }
        }
Esempio n. 8
0
        public OrderDto CreateOrder(CreateOrderInputDto inputDto)
        {
            var tenant   = GetCurrentTenant();
            var district = _districtRepository.FirstOrDefault(i => i.Id == inputDto.DistrictId);

            Validate.Found(district, "Kecamatan");

            var paymentMethod = _paymentMethodRepository.FirstOrDefault(i => i.Bank.Code == inputDto.PaymentMethodCode);

            Validate.Found(paymentMethod, "Metode Pembayaran", inputDto.PaymentMethodCode);

            var order = Order.Create(inputDto.Name, inputDto.Email, inputDto.Whatsapp, district, inputDto.Address, inputDto.Note, paymentMethod, (transactionDate) =>
            {
                return(_autoNumberGenerator.GenerateOrderNumber(transactionDate));
            });

            foreach (var itemInputDto in inputDto.Items)
            {
                var product = _productRepository.Get(itemInputDto.ProductId);
                Validate.Found(product, "Produk");
                order.AddItem(product, itemInputDto.Quantity, itemInputDto.Note);
            }

            var expeditionService = _expeditionServiceRepository.FirstOrDefault(i => i.Id == inputDto.ExpeditionServiceId);

            Validate.Found(expeditionService, "Ekpedisi");

            order.AddShipment(expeditionService, (totalWeight) =>
            {
                var getFreightByServiceInputDto = new GetFreightByServiceInputDto(expeditionService, tenant.District, district, totalWeight);
                var freightResult = _freightAppService.GetFreightByExpeditionService(getFreightByServiceInputDto);
                return(Tuple.Create(freightResult.Cost, freightResult.EstimatedTimeDelivery));
            });

            _orderRepository.Insert(order);

            var message = NotificationMessageHelper.GenerateDraftMessage(order, tenant);

            WhatsappAPI.SendMessage(order.Customer.WhatsappNumber, message);

            return(Mapper.Map <OrderDto>(order));
        }
Esempio n. 9
0
        private void OnOrderFailed(object o, Message <string, OrderFailed> e)
        {
            using (var productDbContext = new ProductDbContext())
            {
                IUnitOfWork unitOfWork = new UnitOfWork <ProductDbContext>(productDbContext);
                IRepository <Entities.Order>   orderRepository   = unitOfWork.GetRepository <Entities.Order>();
                IRepository <Entities.Product> productRepository = unitOfWork.GetRepository <Entities.Product>();

                // Get the order from the database and include all the OrderProducts.
                var orderSpecification = new Specification <Entities.Order>();
                orderSpecification.Include(x => x.Products);
                var order = orderRepository.FirstOrDefault(x => x.OrderId == e.Value.OrderId, orderSpecification).Result;

                // If order do exist.
                if (order != null)
                {
                    foreach (var orderProduct in order.Products)
                    {
                        var product = productRepository
                                      .FirstOrDefault(x => x.ProductId == orderProduct.ProductId).Result;

                        if (product == null)
                        {
                            continue;
                        }

                        product.Quantity += orderProduct.Quantity;

                        productRepository.Update(product);
                    }

                    orderRepository.Remove(order);

                    var result = unitOfWork.SaveChanges().Result;

                    if (!result.IsSuccessfull())
                    {
                        throw new Exception();
                    }
                }
            }
        }
Esempio n. 10
0
        public FreightDto GetFreightByExpeditionService(GetFreightByServiceInputDto inputDto)
        {
            var tenantExpedition = _tenantExpeditionRepo.FirstOrDefault(i => i.ExpeditionService.Id == inputDto.ExpeditionService.Expedition.Id);

            Validate.Found(tenantExpedition, "Expedition");
            if (!tenantExpedition.IsActive)
            {
                throw new HozaruException("Expedition tidak aktif");
            }

            var getShippingCostInputDto = new GetShippingCostInputDto
            {
                Expeditions = new List <Expedition>()
                {
                    inputDto.ExpeditionService.Expedition
                },
                Origin      = inputDto.Origin,
                Destination = inputDto.Destination,
                Weight      = inputDto.Weight
            };

            var rajaOngkirResponses = _rajaOngkirService.GetShippingCost(getShippingCostInputDto);

            if (rajaOngkirResponses.IsNullOrEmpty())
            {
                throw new HozaruException("Ongkos Kirim tidak ditemukan");
            }
            var rajaOngkirResponseResult = rajaOngkirResponses.FirstOrDefault().Results.FirstOrDefault(i => i.ServiceName.ToLower() == inputDto.ExpeditionService.RajaOngkirCode.ToLower());

            var estimatedTimeDelivery = new EstimatedTimeDelivery(rajaOngkirResponseResult.EstimatedToDelivery);
            var freightDto            = new FreightDto()
            {
                ExpeditionServiceId = inputDto.ExpeditionService.Id,
                ExpeditionFullName  = inputDto.ExpeditionService.FullName,
                Cost = rajaOngkirResponseResult.Cost,
                EstimatedTimeDelivery = estimatedTimeDelivery,
                Description           = estimatedTimeDelivery.GetEstimatedTimeDeliverySentence(DateTime.Now),
                TotalWeight           = inputDto.Weight
            };

            return(freightDto);
        }
        public async Task EditSubjectProject(EditSubjectProjectInput input)
        {
            var subject = _subjectRepository.FirstOrDefault(x => x.Id == input.Id);

            if (subject == null)
            {
                throw new UserFriendlyException($"项目不存在!");
            }

            subject.Name          = input.Name;
            subject.SubjectStyle  = input.SubjectStyle;
            subject.Type          = input.Type;
            subject.Credit        = input.Credit;
            subject.IsCompulsory  = input.IsCompulsory;
            subject.AimedAt       = input.AimedAt;
            subject.TeachingStyle = input.TeachingStyle;
            subject.Discription   = input.Discription;

            await _subjectRepository.UpdateAsync(subject);
        }
Esempio n. 12
0
        public bool Delete(long id, out string msg)
        {
            var query = _Repository.FirstOrDefault(c => c.Id == id);

            if (query == null)
            {
                msg = "";
                return(true);
            }
            var count = _storeRepository.GetAllList(c => c.BusinessId == id).Count;

            if (count > 0)
            {
                msg = "ExistRecord";
                return(false);
            }
            _Repository.Delete(id);
            msg = "";
            return(true);
        }
        public void Should_Trigger_Event_On_Delete()
        {
            var triggerCount = 0;

            var emrePesons = _testRepository.GetAllList(p => p.TestName == "emre");

            foreach (var emrePeson in emrePesons)
            {
                _testRepository.Delete(emrePeson.Id);
                Resolve <IEventBus>().Register <EntityDeletedEventData <TestEntity> >(
                    eventData =>
                {
                    eventData.Entity.TestName.ShouldBe("emre");
                    triggerCount++;
                });
            }

            triggerCount.ShouldBe(emrePesons.Count());
            _testRepository.FirstOrDefault(p => p.TestName == "emre").ShouldBe(null);
        }
Esempio n. 14
0
        public LoggedUserDto Login(UserLoginDto userDto)
        {
            User user = _userRepository.FirstOrDefault(User.EqualityExpression(_objectMapper.Map <User>(userDto)));

            _userManager.ValidateUser(user);

            Session session = _sessionRepository.FirstOrDefault(Session.EqualityExpressionByUser(user));

            if (session != null)
            {
                return(_objectMapper.Map <LoggedUserDto>(session));
            }

            session = new Session(user);
            _sessionRepository.Insert(session);

            SaveChanges();

            return(_objectMapper.Map <LoggedUserDto>(session));
        }
Esempio n. 15
0
 public void SaveMunicipality(Municipalities municipality)
 {
     if (municipality.Id == 0)
     {
         _municipalitiesRepo.Insert(municipality);
     }
     else
     {
         var original = _municipalitiesRepo.FirstOrDefault(x => x.Id == municipality.Id);
         if (original != null)
         {
             original.AssignUpdateValues(municipality);
             _municipalitiesRepo.Update(original);
         }
         else
         {
             _municipalitiesRepo.InsertOrUpdate(municipality);
         }
     }
 }
        public async IAsyncEnumerable <string> DeleteFoodItem(int productId)
        {
            var errorCount = 0;
            var product    = await _productRepository.FirstOrDefault(m => m.ProductId == productId, p => p.FoodItemProduct);

            if (product.FoodItemProduct.Count > 0)
            {
                foreach (var foodItemProduct in product.FoodItemProduct)
                {
                    var foodItem = await _foodItemRepository.GetById(foodItemProduct.FoodItemId);

                    errorCount++;
                    yield return($"{foodItem.Name} is using this product");
                }
            }
            if (errorCount == 0)
            {
                await _productRepository.Remove(product);
            }
        }
Esempio n. 17
0
        public void NotifyPlaying(PlayStateDto input)
        {
            var entity = _commAudioFileNameRepository.FirstOrDefault(x => x.FileName == input.FileName);

            if (entity == null)
            {
                Logger.ErrorFormat("数据库中未找到正在播放的文件:{0},状态:{1}(0开始播放,1播放结束)", input.FileName, input.PlayState);
            }

            if (input.PlayState == 0)
            {
                entity.StartPlayTime = DateTime.Now;
                entity.PlayStatus    = PlayStatus.开始播放;
            }
            else if (input.PlayState == 1)
            {
                entity.EndPlayTime = DateTime.Now;
                entity.PlayStatus  = PlayStatus.播放完成;
            }
        }
Esempio n. 18
0
        private List <string[]> Digit(int LanguageId, string Digit)
        {
            var result = new List <string[]>();

            if (string.IsNullOrEmpty(Digit))
            {
                return(result);
            }

            for (int i = 0; i < Digit.Trim().Length; i++)
            {
                var oneDigit = Digit.Substring(i, 1);
                var entity   = _audioDigitRepository.FirstOrDefault(x => x.LanguageId == LanguageId && x.Code == oneDigit);
                if (entity != null)
                {
                    result.Add(new string[] { entity.Path + entity.FileName, entity.Content });
                }
            }
            return(result);
        }
Esempio n. 19
0
        public async Task <int> AddSectionContentAsync(MenuSectionContent menu)
        {
            //_menuPolicy.ValidateMenuSectionContent(menu);
            var sectionContentFound =
                _menuSectionContentRepository.FirstOrDefault(
                    a => a.Lang == menu.Lang && a.SectionId == menu.MenuSection.Id);

            if (sectionContentFound != null)
            {
                sectionContentFound.Lang        = menu.Lang;
                sectionContentFound.DisplayText = menu.DisplayText;
                sectionContentFound.MenuSection = menu.MenuSection;
                var idFound = await _menuSectionContentRepository.InsertOrUpdateAndGetIdAsync(sectionContentFound);

                return(idFound);
            }
            var id = await _menuSectionContentRepository.InsertOrUpdateAndGetIdAsync(menu);

            return(id);
        }
        public virtual void UpdateUserNotificationState(
            int?tenantId,
            Guid userNotificationId,
            UserNotificationState state)
        {
            _unitOfWorkManager.WithUnitOfWork(() =>
            {
                using (_unitOfWorkManager.Current.SetTenantId(tenantId))
                {
                    var userNotification = _userNotificationRepository.FirstOrDefault(userNotificationId);
                    if (userNotification == null)
                    {
                        return;
                    }

                    userNotification.State = state;
                    _unitOfWorkManager.Current.SaveChanges();
                }
            });
        }
Esempio n. 21
0
        public async Task <AbpCompany> CreateAsync(AbpCompany companyinput)
        {
            if (companyinput == null)
            {
                return(null);
            }
            var companyData = _repository.FirstOrDefault(c => c.CompanyNo == companyinput.CompanyNo);

            if (companyData != null)
            {
                return(companyData);
            }
            else
            {
                companyinput.Code = Guid.NewGuid().ToString().Replace("-", "").ToUpper().Substring(0, 12);
                var data = await _repository.InsertAsync(companyinput);

                return(data);
            }
        }
Esempio n. 22
0
 public void SaveAddress(Domains.Address address)
 {
     if (address.Id == 0)
     {
         _addressRepo.Insert(address);
     }
     else
     {
         var original = _addressRepo.FirstOrDefault(x => x.Id == address.Id);
         if (original != null)
         {
             original.AssignUpdateValues(address);
             _addressRepo.Update(original);
         }
         else
         {
             _addressRepo.InsertOrUpdate(address);
         }
     }
 }
Esempio n. 23
0
        public async Task SetParentPage(ParentPageSetInput input)
        {
            var page = _pageRepository.FirstOrDefault(input.PageId);

            if (page == null)
            {
                return;
            }
            if (input.ParentPageId == 0)
            {
                input.ParentPageId = null;
            }
            page.ParentPage = input.ParentPageId;
            await _pageManager.SaveOrEditPageAsync(page);
        }
Esempio n. 24
0
        public bool Create(BillModel bill)
        {
            var listSeatGuids = bill.ListSeats.Select(x => x.Guid);

            var listSeats = _roomDetailRepository.GetAll()
                            .Where(x => listSeatGuids.Any(i => i == x.Guid.ToString())).ToList();



            var room = _roomRepository.FirstOrDefault(x => x.Id == bill.IdRoom);



            var billEntity         = bill.MapTo <Bill>();
            var billDetailEntities = bill.ListBillDetails.MapTo <List <BillDetail> >();

            billEntity.BillDetail = billDetailEntities;

            var listBookings = new List <Booking>();

            foreach (var item in bill.ListSeats)
            {
                var booking = new Booking();
                booking.IdShowTime = bill.IdShowTime;

                //booking.IdRoom = room.Id;
                //booking.IdShowTime = bill.IdShowTime;
                //booking.IdSeatType = item.IdSeatType;

                var seatId = listSeats.FirstOrDefault(x => x.Guid == Guid.Parse(item.Guid)).Id;

                booking.IdRoomDetail = seatId;

                listBookings.Add(booking);
            }

            _billRepository.Insert(billEntity);
            _bookingRepository.Insert(listBookings);

            return(_unitOfWork.SaveChanges());
        }
        /// <summary>
        /// 根据企业微信id批量更新 base user 角色ID
        /// </summary>
        /// <param name="AbpUserId"></param>
        /// <param name="roles"></param>
        /// <returns></returns>
        public async Task BatchUpdateWxByRolesAsync(string WXId, List <int> roles)
        {
            var current_tenantid = 2;

            using (CurrentUnitOfWork.SetTenantId(current_tenantid))
            {
                if (!WXId.IsNullOrEmpty())
                {
                    throw new UserFriendlyException("AbpUserId 不能为0");
                }

                var abpUser = _userLoginRepository.FirstOrDefault(x =>
                                                                  x.ProviderKey == WXId && x.LoginProvider == "Wechat");
                if (abpUser == null)
                {
                    throw new UserFriendlyException("无法操作未绑定");
                }
                var str_user_id = abpUser.Id.ToString();
                await _empRoleRepository.DeleteAsync(x => x.AbpUserId == str_user_id);

                if (roles?.Count > 0)
                {
                    var emp_user = await _empRepository.FirstOrDefaultAsync(x => x.AbpUserId == abpUser.Id);

                    if (emp_user != null)
                    {
                        foreach (var item in roles)
                        {
                            await _empRoleRepository.InsertAsync(new BaseUserEmpRole
                            {
                                AbpUserId    = str_user_id,
                                BaseRoleId   = item,
                                BaseUniqueId = Guid.NewGuid().ToString(),
                                EmpUserGuid  = emp_user.EmpUserGuid,
                                EmpUserId    = emp_user.EmpUserId
                            });
                        }
                    }
                }
            }
        }
        private void AddOrUpdate(IEnumerable <PermissionDefinition> definitions)
        {
            foreach (var definition in definitions)
            {
                var per = _permissionRepository.FirstOrDefault(t => t.Name == definition.Name);
                per                = per ?? new YtPermission();
                per.DisplayName    = definition.DisplayName;
                per.Name           = definition.Name;
                per.ParentId       = definition.ParentId;
                per.Name           = definition.Name;
                per.PermissionType = definition.PermissionType;
                per.IsStatic       = true;
                if (per.Id == default(int))
                {
                    per.IsActive = true;
                    _levelEntityHandler.Create(per);
                }
                else
                {
                    if (per.ParentId == definition.ParentId)
                    {
                        _levelEntityHandler.UpdateAsync(per);
                    }
                    else
                    {
                        _levelEntityHandler.UpdateParent(per);
                    }
                }

                //插入子集
                if (!definition.Childs.Any())
                {
                    continue;
                }
                foreach (var t in definition.Childs)
                {
                    t.ParentId = per.Id;
                }
                AddOrUpdate(definition.Childs);
            }
        }
Esempio n. 27
0
 private void AddOrUpdate(IEnumerable <PermissionDefinition> definitions)
 {
     foreach (var definition in definitions)
     {
         var menu = _permissionRepository.FirstOrDefault(t => t.Name == definition.Name);
         menu                = menu ?? new YtPermission();
         menu.DisplayName    = definition.DisplayName;
         menu.Name           = definition.Name;
         menu.ParentId       = definition.ParentId;
         menu.Name           = definition.Name;
         menu.PermissionType = definition.PermissionType;
         menu.IsStatic       = true;
         if (menu.Id == default(int))
         {
             var defaultactive = _settingManager.GetSettingValueForApplication <bool>(YtSettings.General.PermissionDefaultActive);
             menu.IsActive = defaultactive;
             _levelEntityHandler.Create(menu);
         }
         else
         {
             if (menu.ParentId == definition.ParentId)
             {
                 _levelEntityHandler.Update(menu);
             }
             else
             {
                 _levelEntityHandler.UpdateParent(menu);
             }
         }
         //插入子集
         if (!definition.Children.Any())
         {
             continue;
         }
         foreach (var t in definition.Children)
         {
             t.ParentId = menu.Id;
         }
         AddOrUpdate(definition.Children);
     }
 }
        /// <summary>
        /// return serial number by user
        /// </summary>
        /// <returns></returns>
        public string GetSerial(long salesRepId)
        {
            string serial         = String.Empty;
            var    salesRepSerial = _salesRepSerialRepository.FirstOrDefault(t => t.SalesRepId == salesRepId);

            if (salesRepSerial != null)///if serial by user exist then get next serial
            {
                salesRepSerial.Serial = salesRepSerial.Serial + 1;
                serial = salesRepSerial.Serial.ToString();
                _salesRepSerialRepository.Update(salesRepSerial);
            }
            else///if serial by user does not exist then create a new one
            {
                serial = "1";
                SalesRepSerial salesRepSerial1 = new SalesRepSerial();
                salesRepSerial1.SalesRepId = salesRepId;
                salesRepSerial1.Serial     = 1;
                _salesRepSerialRepository.Insert(salesRepSerial1);
            }
            return(serial);
        }
Esempio n. 29
0
        public override void Execute(SendPrivateEmailJobArgs args)
        {
            //if (RandomHelper.GetRandom(0, 100) <= 50)
            //{
            //    throw new Exception("random test exception");
            //}

            using (CurrentUnitOfWork.SetFilterParameter(AbpDataFilters.MayHaveTenant, AbpDataFilters.Parameters.TenantId, args.TargetTenantId))
            {
                var user = _userRepository.FirstOrDefault(args.TargetUserId);
                if (user == null)
                {
                    Logger.WarnFormat("Unknown userId: {0}. Can not execute job!", args.TargetUserId);
                    return;
                }

                //Here, we should actually send the email! We can inject and use IEmailSender for example.
                Logger.Info("Sending email to " + user.EmailAddress + " in background job -> " + args.Subject);
                Logger.Info(args.Body);
            }
        }
        public void resetprogress(Guid idlesson)
        {
            List <Learn> list = _learnrepository.Where(x => x.LessonId == idlesson && x.UserId == _currentUser.Id).ToList();
            int          sum  = 0;

            foreach (Learn l in list)
            {
                sum += l.Level;
            }
            if (list.Count() != 0)
            {
                int progress = 100 * sum / (5 * list.Count());

                var oldlessonuser = _lessonuserrepository.FirstOrDefault(x => x.UserId == _currentUser.Id && x.LessonId == idlesson);
                if (oldlessonuser != null)
                {
                    oldlessonuser.Progress = progress;
                    _lessonuserrepository.UpdateAsync(oldlessonuser);
                }
            }
        }
        public PreBillingModule(IRepository<PreBilling> preBillingDBRepository, 
                                IRepository<AccountMeta> accountMetaRepository, IRepository<UserMeta> userMetaRepository, ICacheProvider<PreBilling> preBillingCacheProvider,
                                IReportApiClient reportApiClient)
        {
            this.RequiresAnyClaim(new[] { RoleType.Admin.ToString(), RoleType.ProductManager.ToString(), RoleType.Support.ToString() });

            _preBillingDBRepository = preBillingDBRepository;
            _preBillingRepository = preBillingCacheProvider.CacheClient.GetAll();

            var endDateFilter = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, 25);
            var startDateFilter = new DateTime(DateTime.UtcNow.Year, (DateTime.UtcNow.Month - 1), 26);

            Before += async (ctx, ct) =>
            {
                this.Info(() => "Before Hook - PreBilling");
                await CheckCache(ct);
                return null;
            };

            After += async (ctx, ct) => this.Info(() => "After Hook - PreBilling");

            Get["/PreBilling/"] = _ =>
            {
                var preBillStartDateFilter = Request.Query["startDate"];
                var preBillEndDateFilter = Request.Query["endDate"];

                if (!preBillStartDateFilter.HasValue && !preBillEndDateFilter.HasValue) return Negotiate.WithView("Index");

                if (preBillStartDateFilter.HasValue) startDateFilter = preBillStartDateFilter;
                if (preBillEndDateFilter.HasValue) endDateFilter = preBillEndDateFilter;

                endDateFilter = endDateFilter.AddHours(23).AddMinutes(59).AddSeconds(59);

                var customerClientList = new List<PreBillingDto>();

                foreach (var transaction in _preBillingRepository)
                {
                    var customerClientIndex = customerClientList.FindIndex(x => x.Id == transaction.CustomerId || x.Id == transaction.ClientId);
                    if (customerClientIndex > 0) continue;

                    var customerClient = new PreBillingDto();
                    

                    var customerTransactions = _preBillingRepository.Where(x => x.CustomerId == transaction.CustomerId
                                                                            && (x.Created >= startDateFilter && x.Created <= endDateFilter))
                                                                            .DistinctBy(x => x.UserTransaction.TransactionId);

                    var customerPackages = customerTransactions.Where(x => x.CustomerId == transaction.CustomerId)
                                                        .Select(x => x.Package.PackageId).Distinct().Count();

                    var customerUsers = customerTransactions.Where(x => x.CustomerId == transaction.CustomerId).DistinctBy(x => x.User.UserId).Count();


                    var clientTransactions = _preBillingRepository.Where(x => x.ClientId == transaction.ClientId
                                                                            && (x.Created >= startDateFilter && x.Created <= endDateFilter))
                                                                            .DistinctBy(x => x.UserTransaction.TransactionId);

                    var clientPackagesTotal = clientTransactions.Where(x => x.ClientId == transaction.ClientId)
                                                        .Select(x => x.Package.PackageId).Distinct().Count();

                    var clientUsers = customerTransactions.Where(x => x.ClientId == transaction.ClientId).DistinctBy(x => x.User.UserId).Count();

                    if (customerTransactions.Count() < 0 && clientTransactions.Count() < 0) continue;

                    // Customer
                    if (transaction.ClientId == new Guid())
                    {
                        customerClient = new PreBillingDto
                        {
                            Id = transaction.CustomerId,
                            CustomerName = transaction.CustomerName,
                            Transactions = customerTransactions.Count(),
                            Products = customerPackages,
                            AccountMeta = accountMetaRepository.FirstOrDefault(x => x.AccountNumber == transaction.AccountNumber),
                        };

                        customerClient.Users = customerUsers;
                    }

                    // Client
                    if (transaction.CustomerId == new Guid())
                    {
                        customerClient = new PreBillingDto
                        {
                            Id = transaction.ClientId,
                            CustomerName = transaction.ClientName,
                            Transactions = clientTransactions.Count(),
                            Products = clientPackagesTotal,
                            AccountMeta = accountMetaRepository.FirstOrDefault(x => x.AccountNumber == transaction.AccountNumber)
                        };

                        customerClient.Users = clientUsers;
                    }

                   if ((transaction.ClientId == new Guid()) && (transaction.CustomerId == new Guid())) continue;

                   if (customerClientIndex < 0 && customerClient.Transactions > 0) customerClientList.Add(customerClient);
                }

                return Negotiate
                    .WithView("Index")
                    .WithMediaRangeModel(MediaRange.FromString("application/json"), new { data = customerClientList });
            };


            Get["/PreBilling/CustomerClient/{searchId}/Users"] = param =>
            {
                var preBillStartDateFilter = Request.Query["startDate"];
                var preBillEndDateFilter = Request.Query["endDate"];

                if (preBillStartDateFilter.HasValue) startDateFilter = preBillStartDateFilter;
                if (preBillEndDateFilter.HasValue) endDateFilter = preBillEndDateFilter;

                endDateFilter = endDateFilter.AddHours(23).AddMinutes(59).AddSeconds(59);

                var searchId = new Guid(param.searchId);
                var customerUsersDetailList = new List<UserDto>();

                var preBillingRepo = _preBillingRepository.Where(x => (x.CustomerId == searchId || x.ClientId == searchId)
                                                                    && (x.Created >= startDateFilter && x.Created <= endDateFilter)).DistinctBy(x => x.UserTransaction.TransactionId);

                foreach (var transaction in preBillingRepo)
                {
                    var userTransactionsList = new List<TransactionDto>();

                    var userMeta = userMetaRepository.FirstOrDefault(x => x.Id == transaction.User.UserId) ?? new UserMeta
                    {
                        Id = transaction.User.UserId,
                        Username = transaction.User.Username
                    };

                    // Filter repo for user transaction;
                    var userTransactions = preBillingRepo.Where(x => x.User.UserId == transaction.User.UserId)
                                            .Select(x =>
                                            new TransactionDto
                                            {
                                                TransactionId = x.UserTransaction.TransactionId,
                                                RequestId = x.UserTransaction.RequestId,
                                                IsBillable = x.UserTransaction.IsBillable
                                            }).Distinct();

                    foreach (var userTransaction in userTransactions)
                    {
                        var userTransIndex = userTransactionsList.FindIndex(x => x.TransactionId == userTransaction.TransactionId);
                        if (userTransIndex < 0) userTransactionsList.Add(userTransaction);
                    }

                    var user = Mapper.Map<PreBilling, UserDto>(transaction);
                    Mapper.Map(userMeta, user);
                    user.Transactions = userTransactionsList;

                    var userIndex = customerUsersDetailList.FindIndex(x => x.UserId == user.UserId);
                    if (userIndex < 0) customerUsersDetailList.Add(user);
                }

                return Response.AsJson(new { data = customerUsersDetailList });
            };


            Get["/PreBilling/CustomerClient/{searchId}/Packages"] = param =>
            {
                var preBillStartDateFilter = Request.Query["startDate"];
                var preBillEndDateFilter = Request.Query["endDate"];

                if (preBillStartDateFilter.HasValue) startDateFilter = preBillStartDateFilter;
                if (preBillEndDateFilter.HasValue) endDateFilter = preBillEndDateFilter;

                endDateFilter = endDateFilter.AddHours(23).AddMinutes(59).AddSeconds(59);

                var searchId = new Guid(param.searchId);
                var customerPackagesDetailList = new List<PackageDto>();

                var preBillingRepo = _preBillingRepository.Where(x => (x.CustomerId == searchId || x.ClientId == searchId)
                                                                    && (x.Created >= startDateFilter && x.Created <= endDateFilter)).DistinctBy(x => x.UserTransaction.TransactionId);

                foreach (var transaction in preBillingRepo)
                {
                    var packageTransactions = preBillingRepo.Where(x => x.Package.PackageId == transaction.Package.PackageId).Distinct();

                    var package = Mapper.Map<Package, PackageDto>(transaction.Package);
                    package.PackageTransactions = packageTransactions.Count();
                    package.Created = transaction.Created;

                    var packageIndex = customerPackagesDetailList.FindIndex(x => x.PackageId == package.PackageId);

                    if (packageIndex < 0) customerPackagesDetailList.Add(package);

                    if (packageIndex >= 0)
                    {
                        if (customerPackagesDetailList[packageIndex].Created < package.Created)
                        {
                            customerPackagesDetailList[packageIndex] = package;
                        }
                    }
                }

                return Response.AsJson(new { data = customerPackagesDetailList });
            };

            Get["/PreBillingDump"] = _ =>
            {
                var preBillStartDateFilter = Request.Query["startDate"];
                var preBillEndDateFilter = Request.Query["endDate"];

                if (preBillStartDateFilter.HasValue) startDateFilter = preBillStartDateFilter;
                if (preBillEndDateFilter.HasValue) endDateFilter = preBillEndDateFilter;

                endDateFilter = endDateFilter.AddHours(23).AddMinutes(59).AddSeconds(59);

                var preBilling = _preBillingRepository.Where(x => x.Created >= startDateFilter && x.Created <= endDateFilter);

                var report = new ReportDto
                {
                    Template = new ReportTemplate { ShortId = "418Ky2Cj" },
                    Data = new ReportData
                    {
                        PreBillingData = Mapper.Map<IEnumerable<PreBilling>, IEnumerable<PreBillingRecord>>(preBilling)
                    }
                };

                var token = Context.Request.Headers.Authorization.Split(' ')[1];
                reportApiClient.Post(token, "/PreBillingReportDownload?startDate=" + startDateFilter + "&endDate="+ endDateFilter, null, report, null);


                var file = new FileStream(@"D:\LSA Reports\PreBilling " + startDateFilter.ToString("MMMM dd yyyy") + " - " + endDateFilter.ToString("MMMM dd yyyy") + ".xlsx", FileMode.Open);
                string fileName = "PreBilling_" + startDateFilter.ToString("MMMM-dd-yyyy") + "_" + endDateFilter.ToString("MMMM-dd-yyyy") + ".xlsx";

                var response = new StreamResponse(() => file, MimeTypes.GetMimeType(fileName));

                response.WithCookie("fileDownload", "true", DateTime.UtcNow.AddSeconds(10), "", "/");

                return response.AsAttachment(fileName);
            };

        }
        public FinalBillingModule(IRepository<FinalBilling> finalBillingDBRepository, IRepository<UserMeta> userMetaRepository, IRepository<AccountMeta> accountMetaRepository,
                                    ICacheProvider<FinalBilling> finalBillingCacheProvider)
        {
            this.RequiresAnyClaim(new[] { RoleType.Admin.ToString(), RoleType.ProductManager.ToString(), RoleType.Support.ToString() });

            _finalBillingDBRepository = finalBillingDBRepository;
            finalBillingRepository = finalBillingCacheProvider.CacheClient.GetAll();

            var endDateFilter = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, 25);
            var startDateFilter = new DateTime(DateTime.UtcNow.Year, (DateTime.UtcNow.Month - 1), 26);

            Before += async (ctx, ct) =>
            {
                this.Info(() => "Before Hook - FinalBilling");
                await CheckCache(ct);
                return null;
            };

            After += async (ctx, ct) => this.Info(() => "After Hook - FinalBilling");

            Get["/FinalBilling/"] = _ =>
            {
                var finalBillingStartDateFilter = Request.Query["startDate"];
                var finalBillingEndDateFilter = Request.Query["endDate"];

                if (!finalBillingStartDateFilter.HasValue && !finalBillingEndDateFilter.HasValue) return Negotiate.WithView("Index");

                if (finalBillingStartDateFilter.HasValue) startDateFilter = finalBillingStartDateFilter;
                if (finalBillingEndDateFilter.HasValue) endDateFilter = finalBillingEndDateFilter;

                endDateFilter = endDateFilter.AddHours(23).AddMinutes(59).AddSeconds(59);

                var customerClientList = new List<FinalBillingDto>();

                foreach (var transaction in finalBillingRepository)
                {
                    var customerClientIndex = customerClientList.FindIndex(x => x.Id == transaction.CustomerId || x.Id == transaction.ClientId);
                    if (customerClientIndex > 0) continue;

                    var customerClient = new FinalBillingDto();
                    var userList = new List<User>();

                    var customerTransactions = finalBillingRepository.Where(x => x.CustomerId == transaction.CustomerId
                                                                            && (x.Created >= startDateFilter && x.Created <= endDateFilter)).DistinctBy(x => x.UserTransaction.TransactionId);

                    var customerPackages = customerTransactions.Where(x => x.CustomerId == transaction.CustomerId)
                                                        .Select(x => x.Package.PackageId).Distinct().Count();

                    var customerUsers = customerTransactions.Where(x => x.CustomerId == transaction.CustomerId).DistinctBy(x => x.User.UserId).Count();


                    var clientTransactions = finalBillingRepository.Where(x => x.ClientId == transaction.ClientId).DistinctBy(x => x.UserTransaction.TransactionId);

                    var clientPackagesTotal = clientTransactions.Where(x => x.ClientId == transaction.ClientId)
                                                        .Select(x => x.Package.PackageId).Distinct().Count();

                    var clientUsers = customerTransactions.Where(x => x.ClientId == transaction.ClientId).DistinctBy(x => x.User.UserId).Count();

                    // Customer
                    if (transaction.ClientId == new Guid())
                    {
                        customerClient = new FinalBillingDto
                        {
                            Id = transaction.CustomerId,
                            CustomerName = transaction.CustomerName,
                            Transactions = customerTransactions.Count(),
                            Products = customerPackages,
                            AccountMeta = accountMetaRepository.FirstOrDefault(x => x.AccountNumber == transaction.AccountNumber)
                        };

                        customerClient.Users = customerUsers;
                    }

                    // Client
                    if (transaction.CustomerId == new Guid())
                    {
                        customerClient = new FinalBillingDto
                        {
                            Id = transaction.ClientId,
                            CustomerName = transaction.ClientName,
                            Transactions = clientTransactions.Count(),
                            Products = clientPackagesTotal,
                            AccountMeta = accountMetaRepository.FirstOrDefault(x => x.AccountNumber == transaction.AccountNumber)
                        };

                        customerClient.Users = clientUsers;
                    }

                    if (customerClientIndex < 0 && customerClient.Transactions > 0) customerClientList.Add(customerClient);
                }

                return Negotiate
                    .WithView("Index")
                    .WithMediaRangeModel(MediaRange.FromString("application/json"), new { data = customerClientList });
            };


            Get["/FinalBilling/CustomerClient/{searchId}/Users"] = param =>
            {
                var stageBillingStartDateFilter = Request.Query["startDate"];
                var stageBillingEndDateFilter = Request.Query["endDate"];

                if (stageBillingStartDateFilter.HasValue) startDateFilter = stageBillingStartDateFilter;
                if (stageBillingEndDateFilter.HasValue) endDateFilter = stageBillingEndDateFilter;

                endDateFilter = endDateFilter.AddHours(23).AddMinutes(59).AddSeconds(59);

                var searchId = new Guid(param.searchId);
                var customerUsersDetailList = new List<UserDto>();

                var finalBillingRepo = finalBillingRepository.Where(x => (x.CustomerId == searchId || x.ClientId == searchId)
                                                                    && (x.Created >= startDateFilter && x.Created <= endDateFilter)).DistinctBy(x => x.UserTransaction.TransactionId);

                foreach (var transaction in finalBillingRepo)
                {
                    var userTransactionsList = new List<TransactionDto>();

                    var userMeta = userMetaRepository.FirstOrDefault(x => x.Id == transaction.User.UserId) ?? new UserMeta
                    {
                        Id = transaction.User.UserId,
                        Username = transaction.User.Username
                    };

                    // Filter repo for user transaction;
                    var userTransactions = finalBillingRepo.Where(x => x.User.UserId == transaction.User.UserId)
                                            .Select(x =>
                                            new TransactionDto
                                            {
                                                TransactionId = x.UserTransaction.TransactionId,
                                                RequestId = x.UserTransaction.RequestId,
                                                IsBillable = x.UserTransaction.IsBillable
                                            }).Distinct();

                    foreach (var userTransaction in userTransactions)
                    {
                        var userTransIndex = userTransactionsList.FindIndex(x => x.TransactionId == userTransaction.TransactionId);
                        if (userTransIndex < 0) userTransactionsList.Add(userTransaction);
                    }

                    var user = Mapper.Map<FinalBilling, UserDto>(transaction);
                    Mapper.Map(userMeta, user);
                    user.Transactions = userTransactionsList;

                    var userIndex = customerUsersDetailList.FindIndex(x => x.UserId == user.UserId);
                    if (userIndex < 0) customerUsersDetailList.Add(user);
                }

                return Response.AsJson(new { data = customerUsersDetailList });
            };


            Get["/FinalBilling/CustomerClient/{searchId}/Packages"] = param =>
            {
                var stageBillingStartDateFilter = Request.Query["startDate"];
                var stageBillingEndDateFilter = Request.Query["endDate"];

                if (stageBillingStartDateFilter.HasValue) startDateFilter = stageBillingStartDateFilter;
                if (stageBillingEndDateFilter.HasValue) endDateFilter = stageBillingEndDateFilter;

                endDateFilter = endDateFilter.AddHours(23).AddMinutes(59).AddSeconds(59);

                var searchId = new Guid(param.searchId);
                var customerPackagesDetailList = new List<PackageDto>();

                var finalBillingRepo = finalBillingRepository.Where(x => (x.CustomerId == searchId || x.ClientId == searchId)
                                                                    && (x.Created >= startDateFilter && x.Created <= endDateFilter)).DistinctBy(x => x.UserTransaction.TransactionId);

                foreach (var transaction in finalBillingRepo)
                {
                    var packageTransactions = finalBillingRepo.Where(x => x.Package.PackageId == transaction.Package.PackageId).Distinct();

                    var package = Mapper.Map<Package, PackageDto>(transaction.Package);
                    package.PackageTransactions = packageTransactions.Count();
                    package.Created = transaction.Created;

                    var packageIndex = customerPackagesDetailList.FindIndex(x => x.PackageId == package.PackageId);
                    if (packageIndex < 0) customerPackagesDetailList.Add(package);

                    if (packageIndex >= 0)
                    {
                        if (customerPackagesDetailList[packageIndex].Created < package.Created)
                        {
                            customerPackagesDetailList[packageIndex] = package;
                        }
                    }
                }

                return Response.AsJson(new { data = customerPackagesDetailList });
            };

        }
        private Profile GetProfile(string username, bool isAnonymous, IRepository<Profile> profiles)
        {
            var profile = profiles
                .FirstOrDefault(p =>
                          p.User.UserName == username
                          && p.ApplicationName == ApplicationName
                          && p.IsAnonymous == isAnonymous);

            if (profile == null)
            {
                var membershipUser = UnitOfWork.Current.CreateRepository<User>()
                    .FirstOrDefault(p => p.UserName == username
                    && p.ApplicationName == ApplicationName);

                if (membershipUser == null)
                    throw new ProviderException("Profile cannot be created. There is no membership user");

                profile = new Profile();
                profile.IsAnonymous = isAnonymous;
                profile.LastUpdatedDate = System.DateTime.Now;
                profile.LastActivityDate = System.DateTime.Now;
                profile.ApplicationName = this.ApplicationName;
                profile.UserId = membershipUser.Id;

                profiles.Insert(profile);
            }
            return profile;
        }