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!" });
            };
        }
示例#2
0
        /// <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));
        }
示例#3
0
        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())
            });
        }
示例#4
0
        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();
        }
示例#5
0
        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));
        }
示例#6
0
        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();
        }
示例#7
0
        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)));
        }
示例#8
0
        /// <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);
        }
示例#9
0
        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();
            });
        }
示例#10
0
        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);
        }
示例#11
0
        /// <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);
        }
示例#12
0
        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);
        }
示例#13
0
        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);
        }
示例#15
0
        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()));
        }
示例#16
0
        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));
        }
示例#17
0
        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();
        }
示例#20
0
 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());
 }
示例#21
0
        /// <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();
            }
        }
示例#23
0
        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"));
        }
示例#24
0
        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));
        }
示例#25
0
        /// <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();
        }
示例#26
0
        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))
            });
        }
示例#29
0
        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);
        }
示例#30
0
        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);
        }
示例#31
0
        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);
        }
示例#32
0
        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" });
            };
        }
示例#35
0
        /// <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() });
        }