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"); } }
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("删除失败"); } }
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); }
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); } }
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); }
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); } }
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)); }
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(); } } } }
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); }
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); }
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)); }
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); } }
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.播放完成; } }
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); }
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(); } }); }
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); } }
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); } } }
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); }
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); } }
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); }
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; }