public IndustryModule(IPublishStorableCommands publisher, IRepository<Industry> repository) { this.RequiresAnyClaim(new[] { RoleType.Admin.ToString(), RoleType.ProductManager.ToString() }); const string industriesRoute = "/Industries"; Get[industriesRoute + "/{industryIds?}"] = parameters => { var allIndustryDtos = Mapper.Map<IEnumerable<IIndustry>, IEnumerable<IndustryDto>>(repository); if (!parameters.industryIds.HasValue) return Response.AsJson(allIndustryDtos); var filteredIndustries = Enumerable.Empty<Industry>(); if (parameters.industryIds.HasValue) { var industryString = (string)parameters.industryIds.Value; var industryIds = industryString.Split(',').Select(x => new Guid(x)); filteredIndustries = repository.Where(x => industryIds.Contains(x.Id)); } var industries = filteredIndustries as IList<Industry> ?? filteredIndustries.ToList(); var filteredIndustryDtos = Mapper.Map<IEnumerable<IIndustry>, IEnumerable<IndustryDto>>(industries).ToList(); foreach (var industry in filteredIndustryDtos) industry.IsSelected = true; var industryDtos = allIndustryDtos as IList<IndustryDto> ?? allIndustryDtos.ToList(); var response = industries.Any() ? filteredIndustryDtos.Concat(industryDtos).DistinctBy(c => c.Id) : industryDtos; return Response.AsJson(response); }; Post[industriesRoute] = parameters => { var model = Request.Body<dynamic>(); if (model.name.Value == null) throw new LightstoneAutoException("Could not bind 'Name' value"); publisher.Publish(new CreateIndustry(Guid.NewGuid(), model.name.Value, false)); return Response.AsJson(new { response = "Success!" }); }; Put[industriesRoute] = parameters => { var model = Request.Body<dynamic>(); if (model.id.Value == null && model.name.Value == null) throw new LightstoneAutoException("Could not bind 'id' or 'Name' value"); publisher.Publish(new RenameIndustry(new Guid(model.id.Value), model.name.Value, false)); return Response.AsJson(new { response = "Success!" }); }; }
/// <summary> /// /// </summary> /// <param name="InputDto"></param> /// <returns></returns> public async Task <ProductDetailDto> Test(ProductDetailDto InputDto) { var entity = ObjectMapper.Map <ProductDetailDto, ProductDetail>(InputDto); var Result = await ProductDetailRepository.InsertAsync(entity); await ProductDetailRepository.Where(sa => sa.Wide > 0).ToListAsync(); await CurrentUnitOfWork.SaveChangesAsync(); return(ObjectMapper.Map <ProductDetail, ProductDetailDto>(Result)); }
public static IEnumerable <Claim> GetUserClaims(User user, IRepository _db) { var role = _db.Single <Role>(r => r.Id == user.RoleId); var permissions = _db.Where <Permission>(p => role.Permissions.Contains(p.Id)) .Select(p => p.Name); return(new[] { new Claim("user_id", user.Id ?? ""), new Claim(JwtClaimTypes.Name, user.Username ?? ""), new Claim("permissions", JsonConvert.SerializeObject(permissions) ?? "[]"), new Claim(JwtClaimTypes.Role, role.Name), new Claim("validated", user.Validated.ToString()) }); }
public void Update(Mecanic mecanic) { if (mecanic != null) { throw new System.ArgumentNullException(); } var mecanicU = mecanicRepository.Where(m => m.Id == mecanic.Id).FirstOrDefault(); mecanicU.Nume = mecanic.Nume == null ? mecanicU.Nume : mecanic.Nume; mecanicU.Prenume = mecanic.Prenume == null ? mecanicU.Prenume : mecanic.Prenume; mecanicU.DetaliuComanda = mecanic.DetaliuComanda == null ? mecanicU.DetaliuComanda : mecanic.DetaliuComanda; mecanicRepository.Save(); }
public bool HasNewPost(int forumID, int userID) { if (userID == 0) { return(false); } User user = _userRepository.Get(userID); return(_postRepository .Where(item => item.Thread.ForumID == forumID) .Any(item => item.Date > user.LastLogoutDate && !item.Thread.ThreadViewStamps.Any(x => x.Date > user.LastLogoutDate) && item.UserID != user.UserID)); }
public void Update(Operatie operatie) { if (operatie == null) { throw new System.ArgumentNullException(); } var operatieU = operatieRepository.Where(a => a.Id == operatie.Id).FirstOrDefault(); operatieU.Denumire = operatie.Denumire == null ? operatieU.Denumire : operatie.Denumire; operatieU.DetaliuComanda = operatie.DetaliuComanda == null ? operatieU.DetaliuComanda : operatie.DetaliuComanda; operatieU.TimpExecutie = operatie.TimpExecutie == default(decimal) ? operatieU.TimpExecutie : operatie.TimpExecutie; operatieRepository.Save(); }
public async Task HandleAsync(PushExternalApnsNotificationCommand message, CancellationToken cancellationToken) { List <ApnsExternalUserDeviceToken> tokens = await repository.Where <ApnsExternalUserDeviceToken>( x => message.UserIds.Contains(x.ExternalUserId) && x.AppId == message.AppId) .ToListAsync(repository.GetQueryableResolver <ApnsExternalUserDeviceToken>()); if (tokens.Count == 0) { return; } apnsBrokerDispatcher.QueueNotifications( tokens.Select( x => new WrappedApnsNotification(new ApnsNotification(x.DeviceToken, message.Payload), x.AppId))); }
/// <summary> /// get users /// </summary> /// <param name="currentPage"></param> /// <returns></returns> public Data.ServiceModels.User[] GetUsers(int currentPage) { int pageSize = configuration.GetValue <int>("Constants:PageSize"); var dbUsers = user.Where(x => x.IsActive && !x.IsDeleted) .OrderBy(x => x.Id).Skip(currentPage * pageSize).Take(pageSize); var result = dbUsers .Select(x => new Data.ServiceModels.User { Id = x.Id, UserName = x.UserName, Role = (Data.ServiceModels.Enums.UserRole)x.RoleId }).ToArray(); return(result); }
public async Task Should_Query_AppUser() { /* Need to manually start Unit Of Work because * FirstOrDefaultAsync should be executed while db connection / context is available. */ await WithUnitOfWorkAsync(async() => { //Act var adminUser = await _appUserRepository .Where(u => u.UserName == "admin") .FirstOrDefaultAsync(); //Assert adminUser.ShouldNotBeNull(); }); }
public void UpdateProgressLessontable(Guid idlesson) { Guid userid = (Guid)_currentUser.Id; var x = _lessonrepository.FirstOrDefault(k => k.UserId == userid && k.LessonId == idlesson); List <Learn> l = _repository.Where(x => x.LessonId == idlesson).ToList(); int sum = 0; foreach (Learn a in l) { sum += a.Level; } x.Progress = (int)sum * 100 / (5 * l.Count); _lessonrepository.UpdateAsync(x); }
/// <summary> /// 分配角色 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task AssignRoleAsync(AssignRoleDto input) { await _userRoleRepository.Where(a => a.UserId == input.UserId) .ToDelete() .ExecuteAffrowsAsync(); var entities = input.RoleIds.Select(a => new UserRole { UserId = input.UserId, RoleId = a }); await Cache.RemoveAsync(SystemCacheKeyPrefixDefinition.UserPermission + input.UserId); await _userRoleRepository.InsertAsync(entities); }
public List <Word> GetWordOfLession(Guid id) { var word = new List <Word>(); Guid currentId = (Guid)_currentUser.Id; var lession = lessonsRepo.FirstOrDefault(x => x.Id == id); var per = perRepository.Where(x => x.CourseId == lession.CourseId).FirstOrDefault(); if (currentId == per.UserId) { word = _repository.Where(x => x.LessonId == id).ToList(); return(word); } return(word); }
public void GiveRoleSecurity(int roleId, int[] securityIds) { securityIds ??= Array.Empty <int>(); _roleSecurityRepository.Delete(_roleSecurityRepository.Where(u => u.RoleId == roleId, false).ToList()); var list = new List <RoleSecurity>(); foreach (var securityId in securityIds) { list.Add(new RoleSecurity { RoleId = roleId, SecurityId = securityId }); } _roleSecurityRepository.Insert(list); }
public void resetprogress(Guid idlesson) { List <Learn> list = _repository.Where(x => x.LessonId == idlesson && x.UserId == _currentUser.Id).ToList(); int sum = 0; foreach (Learn l in list) { sum += l.Level; } int progress = 100 * sum / (5 * list.Count()); var oldlessonuser = _lessonrepository.FirstOrDefault(x => x.UserId == _currentUser.Id && x.LessonId == idlesson); oldlessonuser.Progress = progress; _lessonrepository.UpdateAsync(oldlessonuser); }
public JsonResult ListOrdemServicos() { var listOrdemServico = _ordemServicoRepository.Where(obj => obj.IDCompany == idCompany).ToList(); List <OrdemServicoVM> listOrdemServicoVM = new List <OrdemServicoVM>(); foreach (var itemOS in listOrdemServico) { var empresa = _empresaRepository.GetByID(itemOS.IDEmpresa); var responsavel = _responsavelRepository.GetByID(itemOS.IDResp); var ambiente = _ambienteRepository.GetByID(itemOS.IDLocal); OrdemServicoVM ordemServicoVM = new OrdemServicoVM() { IDOrdemServico = itemOS.IDOrdemServico, DataCadastro = itemOS.DataCadastro, DataServico = itemOS.DataServico, Status = itemOS.Status, IDEmpresa = itemOS.IDEmpresa, IDResp = itemOS.IDResp, IDLocal = itemOS.IDLocal, NomeContato = itemOS.NomeContato, Telefone = itemOS.Telefone, WhatsApp = itemOS.WhatsApp, OsExpress = itemOS.OSExpress }; if (empresa != null) { ordemServicoVM.RazaoSocial = empresa.RazaoSocial; } if (responsavel != null) { ordemServicoVM.ResponsavelNome = responsavel.NomeResponsavel; } if (ambiente != null) { ordemServicoVM.LocalDescricao = ambiente.NomeEstab; } listOrdemServicoVM.Add(ordemServicoVM); } return(Json(listOrdemServicoVM.ToList())); }
public async Task <ListResultDto <OrganizationDto> > LoadAll(Guid?id) { var query = id.HasValue ? _repository.Where(_ => _.Pid == id) : _repository.Where(_ => _.Pid == null); var items = await query.ToListAsync(); var dtos = ObjectMapper.Map <List <Organization>, List <OrganizationDto> >(items); return(new ListResultDto <OrganizationDto>(dtos)); }
public void Update(DetaliuComanda detaliuComanda) { if (detaliuComanda != null) { throw new System.ArgumentNullException(); } var comanda = detaliuComandaRepository.Where(c => c.Id == detaliuComanda.Id).FirstOrDefault(); comanda.Comanda = detaliuComanda.Comanda == null ? comanda.Comanda : detaliuComanda.Comanda; comanda.Imagines = detaliuComanda.Imagines == null ? comanda.Imagines : detaliuComanda.Imagines; comanda.Materials = detaliuComanda.Materials == null ? comanda.Materials : detaliuComanda.Materials; comanda.Mecanics = detaliuComanda.Mecanics == null ? comanda.Mecanics : detaliuComanda.Mecanics; comanda.Operaties = detaliuComanda.Operaties == null ? comanda.Operaties : detaliuComanda.Operaties; detaliuComandaRepository.Save(); }
public ViewResult List(int clientId) { var client = clientRepository.Where(c => c.Id == clientId).Single(); var viewModel = new UserListViewModel(); foreach (var user in client.InsideUserSets) { viewModel.Users.Add(new UserViewModel(user)); } viewModel.ClientId = clientId; viewModel.ClientName = client.Name; viewModel.HasAdminMenu = this.User.IsInRole("sales") || this.User.IsInRole("consultant"); viewModel.HasWebTab = client.Labels.Any(l => l.Name == "Webbflik"); return(View(viewModel)); }
private void TemplateClipartGallery_Load(object sender, EventArgs e) { fontList = _fontInfoRepository.Where(p => p.IsClipart).OrderBy(p => p.Name).ToList <FontInfo>(); clipartGalleryList = _clipartGalleryRepository.GetAll().ToList <ClipartGallery>(); ddlTemplateGallery.DataSource = clipartGalleryList; ddlTemplateGallery.ValueMember = "Id"; ddlTemplateGallery.DisplayMember = "Name"; if (ddlTemplateGallery.Items.Count > 0) { ddlTemplateGallery.SelectedIndex = 0; } FillClipartTemplates(); }
public async Task <ArticleModel> Get(int id) { return(await _articleRepository .Where(a => a.Id == id) .Select(p => new ArticleModel { Id = p.Id, AuthorId = p.AuthorId, Body = p.Body, Title = p.Title, AuthorEmail = p.Author.Email, AuthorName = p.Author.Name, CreatedAt = p.CreatedAt, UpdatedAt = p.UpdatedAt }) .FirstOrDefaultAsync()); }
/// <summary> /// 管理员登录 /// </summary> /// <param name="adminDto"></param> /// <returns></returns> /// <exception cref="Exception"></exception> public async Task <AdminDto> LoginAdmin(AdminDto adminDto) { var admin = await _adminRepository .Where( u => u.Username.Equals(adminDto.Username)) .FirstOrDefaultAsync(); if (admin == null) { throw Oops.Oh(AdminErrorCodes.a1002); } if (!MD5Encryption.Compare(adminDto.Password, admin.Password)) { throw Oops.Oh(AdminErrorCodes.a1001); } return(admin.Adapt <AdminDto>()); }
public void UpdateAvailableAuthorizations(IList <string> authorizations) { using (var t = new TransactionScope()) { var lista_banco = repository.Where(x => authorizations.Contains(x.Key)).ToList(); var lista_banco_chaves = lista_banco.Select(x => x.Key).ToList(); var lista_nova = authorizations.Except(lista_banco_chaves) .Select(p => new Access(p, null, p, true)).ToList(); if (lista_nova.Any()) { repository.Create(lista_nova); } t.Complete(); } }
public async Task <ActionResult> Create(DogProfile model) { if (!ModelState.IsValid) { return(View(model)); } var user = _userRepo.Where(u => u.Email == HttpContext.User.Identity.Name).FirstOrDefault(); model.CreatedByUserID = user.UserID; _dogRepo.Insert(model); await UploadFiles(model.ProfileID, Request.Files.OfType <HttpPostedFileBase>()); return(RedirectToAction("Index")); }
public ActionResult RoleDetails(int RoleID) { IEnumerable <User> users = _inRoleRepository.Where(item => item.RoleID.Equals(RoleID)).Select(item => item.User).ToList(); Role role = _roleRepository.Get(RoleID); RoleViewModel model = new RoleViewModel() { IsGroup = role.IsGroup, Name = role.Name, RankID = role.RankID, RoleID = role.RoleID, Ranks = _rankRepository.Where(x => x.IsRoleRank == true).ToList(), SpecialPermissions = role.SpecialPermissions, Users = users }; return(View(model)); }
/// <summary> /// 指定用户全部身份失效 /// </summary> /// <param name="userId"></param> /// <returns></returns> public async Task SetUserAllTokenFailureAsync(string userId) { var dt = DateTime.Now; var list = await loginLogRepository .Where(v => v.User_Id == userId && v.IsEnabled && v.IsEnabled && dt < v.ExpiredTime) .ToListAsync(); foreach (var item in list) { item.IsEnabled = false; item.ExpiredTime = dt; await loginLogRepository.UpdateAsync(item); } await loginLogRepository.CommmitAsync(); }
public void Update(Material material) { if (material != null) { throw new System.ArgumentNullException(); } var materialU = materialRepository.Where(m => m.Id == material.Id).FirstOrDefault(); materialU.Cantitate = material.Cantitate == default(decimal) ? materialU.Cantitate : material.Cantitate; materialU.Denumire = material.Denumire == null ? materialU.Denumire : material.Denumire; materialU.Pret = material.Pret == default(int) ? materialU.Pret : material.Pret; materialU.DataAprovizionare = materialU.DataAprovizionare == default(DateTime) ? material.DataAprovizionare : materialU.DataAprovizionare; materialU.DetaliuComanda = material.DetaliuComanda == null ? materialU.DetaliuComanda : material.DetaliuComanda; materialRepository.Save(); }
/// <summary> /// 删除楼盘字典(无单元) /// </summary> /// <param name="id"></param> /// <returns></returns> public async Task DeleteHomeBuildNoUnit(Guid id) { var item = await _homeDictionaryRepository.FindAsync(id); var itemList = _homeDongRepository.Where(x => x.HomeDictinaryId == item.Id); var itemUnit = _homeNoUnitRepository.Where(x => x.HomeDictinaryId == item.Id); foreach (var query in itemList) { foreach (var queryList in itemUnit) { await _homeNoUnitRepository.DeleteAsync(queryList); } await _homeDongRepository.DeleteAsync(query); } await _homeDictionaryRepository.DeleteAsync(item); }
public HttpResponseMessage Get(string companyId) { var networkSettings = _networkRepository.FirstOrDefault(n => n.Id == companyId); if (networkSettings == null || !networkSettings.IsInNetwork) { return(new HttpResponseMessage(HttpStatusCode.NoContent)); } var otherCompaniesInNetwork = _networkRepository.Where(n => n.IsInNetwork && n.Id != networkSettings.Id).ToArray(); var compagniesInSameMarket = otherCompaniesInNetwork.Where(n => n.Market == networkSettings.Market).ToArray(); var preferences = new List <CompanyPreferenceResponse>(); foreach (var nearbyCompany in compagniesInSameMarket) { if (!IsFleetAllowed(nearbyCompany.FleetId, networkSettings.WhiteListedFleetIds, networkSettings.BlackListedFleetIds)) { // Local company is not allowed by the home company continue; } var companyPreference = networkSettings.Preferences.FirstOrDefault(p => p.CompanyKey == nearbyCompany.Id) ?? new CompanyPreference { CompanyKey = nearbyCompany.Id }; var doesNearbyCompanyAllowUsToDispatch = nearbyCompany.Preferences.Any(x => x.CompanyKey == companyId && x.CanAccept); preferences.Add(new CompanyPreferenceResponse { CompanyPreference = companyPreference, CanDispatchTo = doesNearbyCompanyAllowUsToDispatch, FleetId = nearbyCompany.FleetId }); } var sortedCompanyPreferences = preferences .OrderBy(p => p.CompanyPreference.Order == null) .ThenBy(p => p.CompanyPreference.Order); return(new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(JsonConvert.SerializeObject(sortedCompanyPreferences)) }); }
public async Task <EventDetailDto> GetAsync(Guid id) { var @event = await eventManager.EventWithDetails(id); var attendeeIds = @event.Attendees.Select(a => a.UserId).ToList(); var attendees = (await AsyncExecuter.ToListAsync(userRepository.Where(u => attendeeIds.Contains(u.Id)))) .ToDictionary(x => x.Id); var result = ObjectMapper.Map <Event, EventDetailDto>(@event); foreach (var attendeeDto in result.Attendees) { attendeeDto.UserName = attendees[attendeeDto.UserId].UserName; } return(result); }
public async Task <StatusResult> CheckCoursesPermission(Guid id) { var res = new StatusResult() { Result = BaseResult.NeedPermission }; var x = CoursesRepository.FirstOrDefault(x => x.Id == id); if (x.CreatorId == (Guid)_currentUser.Id) { var news = new CoursesPermissionCreateUpdateDto(); news.UserId = (Guid)_currentUser.Id; news.CourseId = id; var ins = ObjectMapper.Map <CoursesPermissionCreateUpdateDto, ParticipationPermission>(news); await _repository.InsertAsync(ins); res.Result = BaseResult.Ok; return(res); } if (x.Password == null) { await AddPermission(id, null); res.Result = BaseResult.Ok; return(res); } if (x.Password == "") { await AddPermission(id, ""); res.Result = BaseResult.Ok; return(res); } var y = _repository.Where(x => x.CourseId == id).Where(x => x.UserId == _currentUser.Id).FirstOrDefault(); if (y == null) { res.Result = BaseResult.NeedPermission; return(res); } res.Result = BaseResult.Ok; return(res); }
public async Task <bool> Run() { var to = _taskEmailRecipientRepo .Where(i => i.TaskType == TaskTypeEnum.MorningEmailTask) .Select(i => i.EmailAddress) .ToList(); var events = GetEvents(10); // TODO: un-hardcode this var feedings = GetFeedings(); var amFeedings = feedings.Where(f => f.AMFeeding).ToList(); var pmFeedings = feedings.Where(f => f.PMFeeding).ToList(); var medications = GetMedications(); var amMeds = medications.Where(m => m.AMDose).ToList(); var noonMeds = medications.Where(m => m.NoonDose).ToList(); var pmMeds = medications.Where(m => m.PMDose).ToList(); var lists = new Dictionary <string, IList> { { "Upcoming Events", events }, { "AM Feedings", amFeedings }, { "PM Feedings", pmFeedings }, { "AM Medications", amMeds }, { "Noon Medications", noonMeds }, { "PM Medications", pmMeds } }; try { var eb = new EmailBuilder(); eb.To(to) .From(_from) .WithSubject(_subject) .WithBody(lists); var email = eb.ToViewModel(); await _mailer.Send(email); } catch { return(false); } return(true); }
private static void RepositoryTests(IRepository<Person> personRepo, Action commitChanges) { Console.WriteLine("Testing with '{0}' ", personRepo); var id = Guid.NewGuid(); var person = new Person { Id = id, Name = id.ToString() }; personRepo.Add(person); // Commit the changes depending on the provider commitChanges(); var found = personRepo.Where(p => p.Id == id) .FirstOrDefault(); Console.Write(found.Name); }
public UserAliasModule(IBus bus, IRepository<ClientUserAlias> userAliasRepository, IRepository<User> usereRepository) { Get["/UserAliases/{clientId:guid}"] = _ => { var clientId = (Guid)_.clientId; var aliases = userAliasRepository.Where(x => x.Client.Id == clientId); return Response.AsJson(Mapper.Map<IEnumerable<ClientUserAlias>, IEnumerable<UserAliasDto>>(aliases)); }; //TODO: Error checking for file type. Allow csv only Post["/UserAliases/ImportUsers/FilesUpload/{clientId:guid}"] = _ => { var clientId = (Guid)_.clientId; var filesUploaded = Request.Files; var files = new List<FileUploadDto>(); var clientImportUsers = new List<UserAliasDto>(); foreach (var httpFile in filesUploaded) { //if (httpFile.ContentType != "text/csv") //{ // // Response for file upload component // files.Add(new FileUploadDto // { // name = httpFile.Name, // size = Convert.ToInt32(httpFile.Value.Length), // error = "File type not allowed" // }); // break; //}; // CSV to object using (var reader = new StreamReader(httpFile.Value)) { var contents = reader.ReadToEnd().Split('\n'); var csv = from line in contents select line.Split(',').ToArray(); clientImportUsers.AddRange(csv.Skip(1).TakeWhile(r => r.Length > 1 && r.Last().Trim().Length > 0) .Select(row => new UserAliasDto { UuId = row[0], FirstName = row[1], LastName = row[2], UserName = row[3].Replace("\r", ""), ClientId = clientId })); foreach (var clientImportUser in clientImportUsers) { var exists = userAliasRepository.Any(x => x.Client.Id == clientId && x.UserName.Trim().ToLower() == clientImportUser.UserName.Trim().ToLower()); if (exists) throw new LightstoneAutoException("{0} already exists".FormatWith(clientImportUser.UserName)); var entity = Mapper.Map(clientImportUser, new ClientUserAlias()); bus.Publish(new CreateUpdateEntity(entity, "Create")); } } // Response for file upload component files.Add(new FileUploadDto { name = httpFile.Name, size = Convert.ToInt32(httpFile.Value.Length), thumbnailUrl = "http://icons.iconarchive.com/icons/custom-icon-design/pretty-office-2/72/success-icon.png", deleteType = "DELETE" }); } var fileResponseJsonObject = new JObject(new JProperty("files", JsonConvert.SerializeObject(files))); return Response.AsJson(fileResponseJsonObject); }; Post["/UserAliases/LinkAlias"] = _ => { var dto = this.Bind<AliasDto>(); var command = new LinkUserAliasCommand(dto.AliasId, dto.CustomerId, dto.UserId); bus.Publish(command); return Response.AsJson("Saved!"); }; }
public PackageModule(IPublishStorableCommands publisher, IRepository<Domain.Entities.Packages.Read.Package> readRepo, INEventStoreRepository<Package> writeRepo, IRepository<State> stateRepo, IEntryPoint entryPoint, IAdvancedBus eBus, IUserManagementApiClient userManagementApi, IBillingApiClient billingApiClient, IPublishIntegrationMessages integration) { Get[PackageBuilderApi.PackageRoutes.RequestIndex.ApiRoute] = _ => { return _.showAll ? Response.AsJson( from p1 in readRepo where p1.Version == (from p2 in readRepo where p2.PackageId == p1.PackageId && !p2.IsDeleted select p2.Version).Max() select p1) : Response.AsJson(readRepo.Where(x => !x.IsDeleted)); }; Get[PackageBuilderApi.PackageRoutes.RequestLookup.ApiRoute] = parameters => { var filter = ((string)Context.Request.Query["q_word[]"].Value + "").Replace(",", " "); var pageIndex = 0; var pageSize = 0; int.TryParse(Context.Request.Query["page_num"].Value, out pageIndex); int.TryParse(Context.Request.Query["per_page"].Value, out pageSize); var industries = ((string)parameters.industryIds.Value + "").Split(',').Select(x => !string.IsNullOrEmpty(x) ? new Guid(x) : new Guid()); var publishedPackages = from p1 in readRepo where p1.Version == (from p2 in readRepo where p2.PackageId == p1.PackageId select p2.Version).Max() && p1.State.Name == StateName.Published && p1.Industries.Any(ind => industries.Contains(ind.Id)) && (p1.Name + "").Trim().ToLower().StartsWith(filter) select p1; var packages = new PagedList<Domain.Entities.Packages.Read.Package>(publishedPackages, pageIndex - 1, pageSize, x => !x.IsDeleted); return Response.AsJson( new { result = packages, cnt_whole = packages.RecordsFiltered }); }; Get[PackageBuilderApi.PackageRoutes.RequestUpdate.ApiRoute] = parameters => Response.AsJson( new { Response = new[] { Mapper.Map<IPackage, PackageDto>(writeRepo.GetById(parameters.id)) } }); Post[PackageBuilderApi.PackageRoutes.Execute.ApiRoute] = parameters => { var apiRequest = this.Bind<ApiRequestDto>(); this.Info(() => StringExtensions.FormatWith("Package Execute Initialized for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); this.Info(() => StringExtensions.FormatWith("Package Read Initialized, TimeStamp: {0}", DateTime.UtcNow)); var package = writeRepo.GetById(apiRequest.PackageId, true); this.Info(() => StringExtensions.FormatWith("Package Read Completed, TimeStamp: {0}", DateTime.UtcNow)); if (package == null) { this.Error(() => StringExtensions.FormatWith("Package not found:", apiRequest.PackageId)); throw new LightstoneAutoException("Package could not be found"); } this.Info(() => StringExtensions.FormatWith("PackageBuilder Auth to UserManagement Initialized for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); var token = Context.Request.Headers.Authorization.Split(' ')[1]; var accountNumber = userManagementApi.Get(token, "/CustomerClient/{id}", new[] { new KeyValuePair<string, string>("id", apiRequest.CustomerClientId.ToString()) }, null); this.Info(() => StringExtensions.FormatWith("PackageBuilder Auth to UserManagement Completed for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); var responses = ((Package)package).Execute(entryPoint, apiRequest.UserId, Context.CurrentUser.UserName, Context.CurrentUser.UserName, apiRequest.RequestId, accountNumber, apiRequest.ContractId, apiRequest.ContractVersion, apiRequest.DeviceType, apiRequest.FromIpAddress, "", apiRequest.SystemType, apiRequest.RequestFields, (double)package.CostOfSale, (double)package.RecommendedSalePrice, apiRequest.HasConsent); // Filter responses for cleaner api payload this.Info(() => StringExtensions.FormatWith("Package Response Filter Cleanup Initialized for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); var filteredResponse = new List<IProvideResponseDataProvider> { new ResponseMeta(apiRequest.RequestId, responses.ResponseState()) }; filteredResponse.AddRange(Mapper.Map<IEnumerable<IDataProvider>, IEnumerable<IProvideResponseDataProvider>>(responses)); this.Info(() => StringExtensions.FormatWith("Package Response Filter Cleanup Completed for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); integration.SendToBus(new PackageResponseMessage(package.Id, apiRequest.UserId, apiRequest.ContractId, accountNumber, filteredResponse.Any() ? filteredResponse.AsJsonString() : string.Empty, apiRequest.RequestId, Context != null ? Context.CurrentUser.UserName : "******")); this.Info(() => StringExtensions.FormatWith("Package Execute Completed for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); return filteredResponse; }; Post[PackageBuilderApi.PackageRoutes.CommitRequest.ApiRoute] = _ => { var apiRequest = this.Bind<ApiCommitRequestDto>(); var token = Context.Request.Headers.Authorization.Split(' ')[1]; var request = billingApiClient.Get(token, "/Transactions/Request/{requestId}", new[] { new KeyValuePair<string, string>("requestId", apiRequest.RequestId.ToString()) } ,null); if (request.Contains("error")) return request; // RabbitMQ new TransactionBus(eBus).SendDynamic(Mapper.Map(apiRequest, new TransactionRequestMessage())); this.Info(() => StringExtensions.FormatWith("Updated TransactionRequest UserState: {0}", apiRequest.UserState)); if (apiRequest.UserState == ApiCommitRequestUserState.Cancelled) return Response.AsJson(new { Success = "Request successfully cancelled by user" }); if (apiRequest.UserState == ApiCommitRequestUserState.VehicleNotProvided) return Response.AsJson(new { Success = "Request successfully marked as VehicleNotProvided by user" }); this.Info(() => StringExtensions.FormatWith("Package ExecuteWithCarId Initialized for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); this.Info(() => StringExtensions.FormatWith("Package Read Initialized, TimeStamp: {0}", DateTime.UtcNow)); var package = writeRepo.GetById(apiRequest.PackageId, true); this.Info(() => StringExtensions.FormatWith("Package Read Completed, TimeStamp: {0}", DateTime.UtcNow)); if (package == null) { this.Error(() => StringExtensions.FormatWith("Package not found:", apiRequest.PackageId)); throw new LightstoneAutoException("Package could not be found"); } this.Info(() => StringExtensions.FormatWith("PackageBuilder Auth to UserManagement Initialized for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); var accountNumber = userManagementApi.Get(token, "/CustomerClient/{id}", new[] { new KeyValuePair<string, string>("id", apiRequest.CustomerClientId.ToString()) }, null); this.Info(() => StringExtensions.FormatWith("PackageBuilder Auth to UserManagement Completed for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); var responses = ((Package)package).ExecuteWithCarId(entryPoint, apiRequest.UserId, Context.CurrentUser.UserName, Context.CurrentUser.UserName, apiRequest.RequestId, accountNumber, apiRequest.ContractId, apiRequest.ContractVersion, apiRequest.DeviceType, apiRequest.FromIpAddress, "", apiRequest.SystemType, apiRequest.RequestFields, (double)package.CostOfSale, (double)package.RecommendedSalePrice, apiRequest.HasConsent); // Filter responses for cleaner api payload this.Info(() => StringExtensions.FormatWith("Package Response Filter Cleanup Initialized for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); var filteredResponse = new List<IProvideResponseDataProvider> { new ResponseMeta(apiRequest.RequestId, responses.ResponseState()) }; filteredResponse.AddRange(Mapper.Map<IEnumerable<IDataProvider>, IEnumerable<IProvideResponseDataProvider>>(responses)); this.Info(() => StringExtensions.FormatWith("Package Response Filter Cleanup Completed for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); integration.SendToBus(new PackageResponseMessage(package.Id, apiRequest.UserId, apiRequest.ContractId, accountNumber, filteredResponse.Any() ? filteredResponse.AsJsonString() : string.Empty, apiRequest.RequestId, Context != null ? Context.CurrentUser.UserName : "******")); this.Info(() => StringExtensions.FormatWith("Package ExecuteWithCarId Completed for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); return filteredResponse; }; Post[PackageBuilderApi.PackageRoutes.ProcessCreate.ApiRoute] = parameters => { var dto = this.Bind<PackageDto>(); dto.Id = dto.Id == new Guid() ? Guid.NewGuid() : dto.Id; // Required for acceptance tests where we specify the Id var dProviders = Mapper.Map<IEnumerable<DataProviderDto>, IEnumerable<DataProviderOverride>>(dto.DataProviders); publisher.Publish(new CreatePackage(dto.Id, dto.Name, dto.Description, dto.CostOfSale, dto.RecommendedSalePrice, dto.Notes, dto.PackageEventType, Mapper.Map<PackageDto, IEnumerable<Industry>>(dto), dto.State, dto.Owner, DateTime.UtcNow, null, dProviders)); ////RabbitMQ var metaEntity = Mapper.Map(dto, new PackageMessage()); var advancedBus = new TransactionBus(eBus); advancedBus.SendDynamic(metaEntity); return Response.AsJson(new { msg = "Success" }); }; Put[PackageBuilderApi.PackageRoutes.ProcessUpdate.ApiRoute] = parameters => { var dto = this.Bind<PackageDto>(); var dProviders = Mapper.Map<IEnumerable<DataProviderDto>, IEnumerable<DataProviderOverride>>(dto.DataProviders); publisher.Publish(new UpdatePackage(parameters.id, dto.Name, dto.Description, dto.CostOfSale, dto.RecommendedSalePrice, dto.Notes, dto.PackageEventType, Mapper.Map<PackageDto, IEnumerable<Industry>>(dto), dto.State, dto.Version, dto.Owner, dto.CreatedDate, DateTime.UtcNow, dProviders)); ////RabbitMQ var metaEntity = Mapper.Map(dto, new PackageMessage()); var advancedBus = new TransactionBus(eBus); advancedBus.SendDynamic(metaEntity); return Response.AsJson(new { msg = "Success, " + parameters.id + " edited" }); }; Put["/Packages/Clone/{id}/{cloneName}"] = parameters => { var packageToClone = Mapper.Map<IPackage, PackageDto>(writeRepo.GetById(parameters.id)); var dataProvidersToClone = Mapper.Map<IEnumerable<DataProviderDto>, IEnumerable<DataProviderOverride>>( packageToClone.DataProviders); var stateResolve = stateRepo.Where(x => x.Alias == "Draft") .Select(y => new State(y.Id, y.Name, y.Alias)); publisher.Publish(new CreatePackage(Guid.NewGuid(), parameters.cloneName, packageToClone.Description, packageToClone.CostOfSale, packageToClone.RecommendedSalePrice, packageToClone.Notes, packageToClone.PackageEventType, packageToClone.Industries, stateResolve.FirstOrDefault(), packageToClone.Owner, DateTime.UtcNow, null, dataProvidersToClone)); return Response.AsJson( new { msg = "Success, Package with ID: " + parameters.id + " has been cloned to package '" + parameters.cloneName + "'" }); }; Delete[PackageBuilderApi.PackageRoutes.ProcessDelete.ApiRoute] = parameters => { this.RequiresAnyClaim(new[] { RoleType.Admin.ToString(), RoleType.ProductManager.ToString(), RoleType.Support.ToString() }); publisher.Publish(new DeletePackage(new Guid(parameters.id))); return Response.AsJson(new { msg = "Success, " + parameters.id + " deleted" }); }; }
/// <summary> /// Gets the tags associated with media objects the user has permission to view. /// </summary> /// <param name="repo">The metadata tag repository.</param> /// <returns>A collection of <see cref="Entity.Tag" /> instances.</returns> /// <remarks>This function is similar to <see cref="GetTagsForAlbums(IRepository{MetadataTagDto})" />, so if a developer /// modifies it, be sure to check that function to see if it needs a similar change.</remarks> private IEnumerable<Entity.Tag> GetTagsForMediaObjects(IRepository<MetadataTagDto> repo) { var qry = repo.Where( m => m.FKGalleryId == SearchOptions.GalleryId && m.Metadata.MetaName == TagName); if (!String.IsNullOrEmpty(SearchOptions.SearchTerm)) { qry = qry.Where(m => m.FKTagName.Contains(SearchOptions.SearchTerm)); } if (SearchOptions.IsUserAuthenticated) { if (!UserCanViewRootAlbum) { // User can't view the root album, so get a list of the albums she *can* see and make sure our // results only include albums that are viewable. var albumIds = SearchOptions.Roles.GetViewableAlbumIdsForGallery(SearchOptions.GalleryId); qry = qry.Where(a => albumIds.Contains(a.Metadata.MediaObject.FKAlbumId)); } } else if (UserCanViewRootAlbum) { // Anonymous user, so don't include any private albums in results. qry = qry.Where(a => !a.Metadata.MediaObject.Album.IsPrivate); } else { // User is anonymous and does not have permission to view the root album, meaning they // can't see anything. Return empty collection. return new List<Entity.Tag>(); } return qry.GroupBy(t => t.FKTagName).Select(t => new Entity.Tag { Value = t.Key, Count = t.Count() }); }