Exemplo n.º 1
0
 public static async Task<Response> CreateUserAsync(AddUserModel registerModel)
 {
     var response = new Response();
     var context = new AdminDbContext();
     ValidateUser(registerModel, response);
     if (!response.Success)
     {
         return response;
     }
     if (context.Users.Any(u => u.Email.Equals(registerModel.Email)))
     {
         response.AddMessage(false, "This email is already registered", ResponseMessageType.Warning);
     }
     else
     {
         var user = new User();
         user.Email = registerModel.Email;
         user.Password = GenerateHashWithSalt(registerModel.Password, registerModel.Email);
         user.PasswordSalt = Path.GetRandomFileName();
         user.RegisterDate = registerModel.RegisterDate;
         user.Active = registerModel.Active;
         context.Users.Add(user);
         await context.SaveChangesAsync();
     }
     return response;
 }
Exemplo n.º 2
0
 public static HomePageModel GetHomePageModel()
 {
     var pageModel = new HomePageModel();
     var context = new AdminDbContext();
     pageModel.RelationTypes = RelationTypeManager.GetHomeRelationTypes(context);
     pageModel.EntityTypes = EntityTypeManager.GetHomeEntitiesTypes(context);
     return pageModel;
 }
 public static IEnumerable<EntityTypeModel> GetEntityTypes(bool withEntities=false)
 {
     var context = new AdminDbContext();
     var responseData = context.EntityTypes.AsEnumerable();
     if(withEntities)
     {
         responseData = responseData.Where(et=>et.Entities.Any());
     }
     return responseData.OrderBy(et=>et.Name).Select(u => new EntityTypeTableModel { Id = u.Id, Code = u.Code, Name = u.Name });
 }
Exemplo n.º 4
0
 public static IEnumerable<SearchResultItemModel> Search(SearchModel search)
 {
     var page = (search.Page??1) - 1;
     var skip = page*20;
     var context = new AdminDbContext();
     var totalResult = context.Entities.Where(e => e.Name.Contains(search.Query ?? string.Empty));
     var totalResults = totalResult.Count();
     var result = totalResult.OrderBy(e=>e.Name).Skip(skip).Take(20).Select(e => new SearchResultItemModel { Title = e.Name, EntityId = e.Id, Type = e.Type.Name, Image = e.Image??e.Type.DefaultImage });
     return result;
 }
        public static IEnumerable<RelationTypeModel> GetRelationTypes(bool withItems = false)
        {
            var context = new AdminDbContext();
            var responseData = context.RelationTypes.AsEnumerable();
            if (withItems)
            {
                responseData = responseData.Where(rt => rt.Relations.Any());

            }
                return responseData.OrderBy(et => et.Name).Select(u => new RelationTypeDisplayModel { Id = u.Id, Code = u.Code, Name = u.Name });
        }
 public static async Task<Utils.Messages.Response> EditRelationAsync(RelationAddEditModel relationModel)
 {
     var response = new Response();
     var context = new AdminDbContext();
     ValidateRelation(relationModel, response);
     if (!response.Success)
     {
         return response;
     }
     var relation = context.Relations.Find(relationModel.Id);
     relation.TypeId = relationModel.TypeId;
     await context.SaveChangesAsync();
     return response;
 }
Exemplo n.º 7
0
 public static Models.Pages.EntitiesBrowsePageModel GetEntitiesBrowsePageModel(long entityTypeId, int page)
 {
     var pageModel = new EntitiesBrowsePageModel();
     var pageSize = 20;
     var skip = page * pageSize;
     var context = new AdminDbContext();
     var entityType = context.EntityTypes.Find(entityTypeId);
     var totalResult = entityType.Entities.Count();
     pageModel.Entities = entityType.Entities.OrderBy(e => e.Name).Skip(skip).Take(pageSize).Select(e => new EntityCardModel { Id = e.Id, Name = e.Name, Image = e.Image ?? e.Type.DefaultImage, Type = e.Type.Name, TypeId = e.TypeId });
     pageModel.TotalPages = totalResult % 20 == 0 ? totalResult / 20 : (totalResult / 20) + 1;
     pageModel.CurrentPage = page + 1;
     pageModel.Type = entityType.Name;
     pageModel.CurrentEntityTypeId = entityTypeId;
     return pageModel;
 }
        public static DTResponse GetRelationTypes(DTRequest request)
        {
            var context = new AdminDbContext();
            var response = new DTResponse()
            {
                draw = request.draw
            };
            var relationTypes = context.RelationTypes;
            var data = relationTypes.AsEnumerable();
            if (request.order != null && request.order.Any())
            {
                var asc = request.order[0].dir == "asc";
                switch (request.order[0].column)
                {
                    case 0:
                        {
                            data = asc ? data.OrderBy(u => u.Id) : data.OrderByDescending(u => u.Id);
                            break;
                        }
                    case 1:
                        {
                            data = asc ? data.OrderBy(u => u.Code) : data.OrderByDescending(u => u.Code);
                            break;
                        }
                    case 2:
                        {
                            data = asc ? data.OrderBy(u => u.Name) : data.OrderByDescending(u => u.Name);
                            break;
                        }

                    default:
                        {
                            data = data.OrderBy(u => u.Id);
                            break;
                        }

                }
            }
            response.recordsFiltered = data.Count();
            data = data.Skip(request.start).Take(request.length);
            var responseData = data.Select(u => new RelationTypeDisplayModel { Id = u.Id, Code = u.Code, Name = u.Name, Relations = u.Relations.Count() });
            response.data = responseData;

            response.recordsTotal = context.RelationTypes.Count();
            return response;
        }
Exemplo n.º 9
0
 public static Response Create(RegisterModel registerModel)
 {
     var response = new Response();
     var context = new AdminDbContext();
     if (context.Users.Any(u => u.Email.Equals(registerModel.Email)))
     {
         response.AddMessage(false, "This email is already registered", ResponseMessageType.Warning);
     }
     else
     {
         var user = new User();
         user.Email = registerModel.Email;
         user.Password = GenerateHashWithSalt(registerModel.Password, registerModel.Email);
         user.PasswordSalt = Path.GetRandomFileName();
         context.Users.Add(user);
         context.SaveChanges();
     }
     return response;
 }
        public static async Task<Utils.Messages.Response> AddRelationTypeAsync(RelationTypeAddEditModel relationTypeModel)
        {

            var response = new Response();
            var context = new AdminDbContext();
            if (context.RelationTypes.Any(u => u.Code.Equals(relationTypeModel.Code)))
            {
                response.AddMessage(false, "This code is already registered", ResponseMessageType.Warning);
            }
            else
            {
                var relationType = new RelationType();
                relationType.Code = relationTypeModel.Code;
                relationType.Name = relationTypeModel.Name;
                context.RelationTypes.Add(relationType);
                await context.SaveChangesAsync();
            }
            return response;
        }
Exemplo n.º 11
0
 public static async Task<Utils.Messages.Response> AddEntityAsync(EntityAddEditModel entityModel)
 {
     var response = new Response();
     var context = new AdminDbContext();
     ValidateEntity(entityModel, response);
     if (!response.Success)
     {
         return response;
     }
     else
     {
         var entity = new Entity();
         entity.TypeId = entityModel.TypeId;
         entity.Name = entityModel.Name;
         context.Entities.Add(entity);
         await context.SaveChangesAsync();
     }
     return response;
 }
Exemplo n.º 12
0
        public static EntityRelationsPageModel GetEntityRelationsPageModel(long entityId, long relationTypeId, int page)
        {
            var pageModel = new EntityRelationsPageModel();
            var pageSize = 20;
            var skip = page * pageSize;
            var context = new AdminDbContext();
            var entity = context.Entities.Find(entityId);
            var relationType = context.RelationTypes.Find(relationTypeId);
            var relations = context.Relations.Where(r => r.TypeId.Equals(relationTypeId) && r.RelationEntities.Any(re => re.EntityId.Equals(entityId))).OrderByDescending(r => r.Id).Skip(skip).Take(pageSize).ToList();
            pageModel.CurrentRelationTypeId = relationTypeId;
            pageModel.Id = entity.Id;
            pageModel.Name = entity.Name;
            pageModel.RelationType = relationType.Name;
            pageModel.Type = entity.Type.Name;
            pageModel.Image = entity.Image ?? entity.Type.DefaultImage;
            var totalRelations = relations.Count();
            pageModel.TotalPages = totalRelations % 20 == 0 ? totalRelations / 20 : (totalRelations / 20) + 1;
            pageModel.CurrentPage = page + 1;
            pageModel.Relations = relations.Select(r => new RelationCardModel
            {
                Id = r.Id,
                Attributes = r.Attributes.Take(3).Select(attr => new AttributeDisplayModel
                {
                    Name = attr.Name,
                    Value = attr.Value
                }),
                Entities = r.RelationEntities.Select(re => new RelationCardEntity
                {
                    Id = re.EntityId,
                    Name = re.Entity.Name,
                    Type = re.MemberType != null ? re.Type.Name : "",
                    EntityType = re.Entity.Type.Name
                })
            });

            return pageModel;
        }
Exemplo n.º 13
0
        public static IEnumerable<ApiProgressModel> UpdateETenderContracts(int onPage, int requests)
        {
            var tenderUrl = "http://etender.gov.md/json/contractList?rows=" + onPage;
            var index = 0;
            for (var request = 1; request <= requests; request++)
            {
                var context = new AdminDbContext();
                var tenderType = context.EntityTypes.FirstOrDefault(et => et.Code == 3);
                var contractRelationType = context.RelationTypes.FirstOrDefault(et => et.Code == 1);
                var bankType = context.EntityTypes.FirstOrDefault(et => et.Code.Equals(9));
                var accountOwnerRelationType = context.RelationTypes.First(rt => rt.Code.Equals(11));
                var tenderCreatorType = context.RelationTypes.First(rt => rt.Code.Equals(5));

                var personType = context.EntityTypes.First(rt => rt.Code.Equals(1));
                var companyType = context.EntityTypes.First(rt => rt.Code.Equals(2));

                var url = tenderUrl + "&page=" + request;
                yield return new ApiProgressModel { Message = "Start to collect data" };
                var tenderResultObject = APIClient.GetApiObject<Models.ETender.Contracts.RootObject>(url);
                var totalRecords = tenderResultObject.rows.Count();
                yield return new ApiProgressModel { Message = "Got " + totalRecords + " records" };

                foreach (var row in tenderResultObject.rows)
                {
                    var progress = new ApiProgressModel();
                    if (!context.Relations.Any(e => e.TypeId.Equals(contractRelationType.Id) && e.Attributes.Any(attr => attr.Name.Equals("ETender Id") && attr.Value.Equals(row.id.ToString()))))
                    {
                        var contractRelation = new Relation();
                        contractRelation.TypeId = contractRelationType.Id;
                        context.Relations.Add(contractRelation);
                        contractRelation.Attributes.Add(new RelationAttribute() { Name = "Amount", Value = row.amount.ToString() });
                        contractRelation.Attributes.Add(new RelationAttribute() { Name = "Contract type", Value = row.contractType.mdValue ?? string.Empty });
                        contractRelation.Attributes.Add(new RelationAttribute() { Name = "Contract date", Value = row.contractDate ?? string.Empty });
                        contractRelation.Attributes.Add(new RelationAttribute() { Name = "State", Value = row.status.mdValue ?? string.Empty });
                        contractRelation.Attributes.Add(new RelationAttribute() { Name = "State date", Value = row.currentStatusDate ?? string.Empty });
                        contractRelation.Attributes.Add(new RelationAttribute() { Name = "Contract number", Value = row.contractNumber ?? string.Empty });
                        contractRelation.Attributes.Add(new RelationAttribute() { Name = "ETender offer id", Value = row.fkOfferId.ToString() });
                        contractRelation.Attributes.Add(new RelationAttribute() { Name = "ETender decision id", Value = row.currentStatusDate ?? string.Empty });
                        contractRelation.Attributes.Add(new RelationAttribute() { Name = "Register date", Value = row.registerDate ?? string.Empty });
                        contractRelation.Attributes.Add(new RelationAttribute() { Name = "Final date", Value = row.finalDate ?? string.Empty });
                        contractRelation.Attributes.Add(new RelationAttribute() { Name = "Contract real number", Value = row.contractRealNumber ?? string.Empty });
                        contractRelation.Attributes.Add(new RelationAttribute() { Name = "Note", Value = row.note ?? string.Empty });
                        contractRelation.Attributes.Add(new RelationAttribute() { Name = "ETender Id", Value = row.id.ToString() });
                        contractRelation.References.Add(new RelationReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/contracte" });

                        var stateOrgTypeCode = row.tender.stateOrg != null ? row.tender.stateOrg.orgLegalForm!=null?row.tender.stateOrg.orgLegalForm.id:590 : 590;
                        var stateOrgType = context.EntityTypes.FirstOrDefault(et => et.Code.Equals(stateOrgTypeCode));
                        if (stateOrgType == null)
                        {
                            stateOrgType = new EntityType() { Code = row.tender.stateOrg.orgLegalForm.id, Name = row.tender.stateOrg.orgLegalForm.mdValue };
                            context.EntityTypes.Add(stateOrgType);
                            yield return new ApiProgressModel { Message = "New entity type added  " + stateOrgType.Name };
                        }
                        var stateOrgEntity = context.Entities.FirstOrDefault(e => e.Type.Code.Equals(stateOrgType.Code) && e.Attributes.Any(attr => attr.Name.Equals("Code") && attr.Value.Equals(row.tender.stateOrg.code)));
                        if (stateOrgEntity == null)
                        {
                            stateOrgEntity = new Entity();
                            stateOrgEntity.Name = row.tender.stateOrg.orgName;
                            stateOrgEntity.Type = stateOrgType;
                            stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Code", Value = row.tender.stateOrg.code ?? string.Empty });
                            stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "ETender Id", Value = row.tender.stateOrg.id.ToString() });
                            stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Address", Value = row.tender.stateOrg.address ?? string.Empty });
                            stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Account", Value = row.tender.stateOrg.account ?? string.Empty });
                            stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Treasuty account", Value = row.tender.stateOrg.treasutyAcc ?? string.Empty });
                            stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Fiscal code", Value = row.tender.stateOrg.fiscalCode != null ? row.tender.stateOrg.fiscalCode.ToString() : string.Empty });
                            stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Account", Value = row.tender.stateOrg.account ?? string.Empty });
                            stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Bank account", Value =row.tender.stateOrg.bankAccount!=null?row.tender.stateOrg.bankAccount.ToString() : string.Empty });
                            stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Phone", Value = row.tender.stateOrg.phone ?? string.Empty });
                            stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Fax", Value = row.tender.stateOrg.fax ?? string.Empty });
                            if (row.addAccordReason != null)
                            {
                                stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Accord reason", Value = row.addAccordReason.ToString() });
                            }
                            if (row.addAccordReasonDocuments != null)
                            {
                                stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Accord reason", Value = row.addAccordReasonDocuments.ToString() });
                            }
                            if (row.addAccordShortDescr != null)
                            {
                                stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Accord reason short description", Value = row.addAccordShortDescr.ToString() });
                            }

                            stateOrgEntity.References.Add(new EntityReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/contracte" });
                            context.Entities.Add(stateOrgEntity);

                            yield return new ApiProgressModel { Message = "Creating " + stateOrgType.Name + " " + stateOrgEntity.Name };
                        }

                        if (row.tender.stateOrg.bank != null)
                        {
                            var bank = context.Entities.FirstOrDefault(e => e.TypeId.Equals(bankType.Id) && e.Attributes.Any(attr => attr.Name.Equals("BIC") && attr.Value.Equals(row.tender.stateOrg.bank.sapiCode)));
                            if (bank == null)
                            {
                                bank = new Entity();
                                bank.Name = row.tender.stateOrg.bank.mdShort;
                                bank.Type = bankType;
                                bank.Attributes.Add(new EntityAttribute() { Name = "Short Name", Value = row.tender.stateOrg.bank.mdShort ?? string.Empty });
                                bank.Attributes.Add(new EntityAttribute() { Name = "mfo Code", Value = row.tender.stateOrg.bank.mfoCode ?? string.Empty });
                                bank.Attributes.Add(new EntityAttribute() { Name = "Fiscal Code", Value = row.tender.stateOrg.bank.fiscalCode ?? string.Empty });
                                bank.Attributes.Add(new EntityAttribute() { Name = "BIC", Value = row.tender.stateOrg.bank.sapiCode ?? string.Empty });
                                bank.References.Add(new EntityReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/contracte" });
                                context.Entities.Add(bank);
                                yield return new ApiProgressModel { Message = "Creating entity Bank " + bank.Name };
                            }

                            if (!context.Relations.Any(r => r.TypeId.Equals(accountOwnerRelationType.Id) && r.RelationEntities.Any(re => re.EntityId.Equals(stateOrgEntity.Id) && r.RelationEntities.Any(re1 => re1.EntityId.Equals(bank.Id)))))
                            {
                                var bankRelation = new Relation();
                                bankRelation.TypeId = accountOwnerRelationType.Id;
                                bankRelation.Type = accountOwnerRelationType;
                                bankRelation.RelationEntities.Add(new RelationEntity { Entity = bank, MemberType= 4});
                                bankRelation.RelationEntities.Add(new RelationEntity { Entity = stateOrgEntity, MemberType = 3 });
                                bankRelation.Attributes.Add(new RelationAttribute { Name = "Account", Value = row.tender.stateOrg.account ?? string.Empty });
                                bankRelation.References.Add(new RelationReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/contracte" });
                                context.Relations.Add(bankRelation);
                            }
                        }

                        var tenderEntity = context.Entities.FirstOrDefault(e => e.TypeId.Equals(tenderType.Id) && e.Attributes.Any(attr => attr.Name.Equals("ETender Id") && attr.Value.Equals(row.tender.id.ToString())));
                        if (tenderEntity == null)
                        {
                            tenderEntity = new Entity();
                            tenderEntity.TypeId = tenderType.Id;
                            tenderEntity.Name = row.tender.tenderData.goodsDescr;
                            context.Entities.Add(tenderEntity);
                            yield return new ApiProgressModel { Message = "Creating new Tender entity " + tenderEntity.Name };
                            tenderEntity.Attributes.Add(new EntityAttribute() { Name = "ETender Id", Value = row.id.ToString() });
                            tenderEntity.Attributes.Add(new EntityAttribute() { Name = "Registration number ", Value = row.tender.regNumber ?? string.Empty });
                            tenderEntity.Attributes.Add(new EntityAttribute() { Name = "Goods", Value = row.tender.tenderData.goodsDescr ?? string.Empty });
                            tenderEntity.References.Add(new EntityReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/contracte" });
                            context.Entities.Add(tenderEntity);
                            var relation = new Relation();

                            relation.Type = tenderCreatorType;
                            relation.RelationEntities.Add(new RelationEntity { Entity = stateOrgEntity });
                            relation.RelationEntities.Add(new RelationEntity { Entity = tenderEntity });
                            context.Relations.Add(relation);
                        }

                        var seller = context.Entities.FirstOrDefault(e => e.TypeId.Equals(companyType.Id) && e.Name.Equals( row.participant.fullName));
                        if (seller == null)
                        {
                            seller = context.Entities.FirstOrDefault(e => e.TypeId.Equals(personType.Id) && e.Name.Equals(row.participant.fullName));
                        }
                        if (seller == null)
                        {
                            seller = new Entity();

                            seller.Name = row.participant.fullName;
                            seller.Attributes.Add(new EntityAttribute() { Name = "ETender Id", Value = row.participant.id.ToString() });
                            if (row.participant.juristicPerson == 1)
                            {
                                seller.Attributes.Add(new EntityAttribute() { Name = "Juridical name", Value = row.participant.jurName ?? string.Empty });
                                seller.Type = companyType;
                            }
                            else {
                                seller.Type = personType;
                                seller.Attributes.Add(new EntityAttribute() { Name = "First name", Value = row.participant.name ?? string.Empty });
                                seller.Attributes.Add(new EntityAttribute() { Name = "Last name", Value = row.participant.lastName ?? string.Empty });
                                seller.Attributes.Add(new EntityAttribute() { Name = "Patronymic", Value = row.participant.patronymic ?? string.Empty });
                            }
                            seller.References.Add(new EntityReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/contracte" });
                            context.Entities.Add(seller);
                        }

                        contractRelation.RelationEntities.Add(new RelationEntity { Entity = tenderEntity });
                        contractRelation.RelationEntities.Add(new RelationEntity { Entity = stateOrgEntity, MemberType = 1 });
                        contractRelation.RelationEntities.Add(new RelationEntity { Entity = seller, MemberType = 2 });
                        context.Relations.Add(contractRelation);
                        context.SaveChanges();
                        index++;
                        yield return new ApiProgressModel { Message = index+ "  Saved!!!" };
                    }
                    else
                    {
                        yield return new ApiProgressModel { Message = "Contract with ETender Id = " + row.id + " exists" };
                    }
                }

            }
            yield return new ApiProgressModel { Message = "Processing data finished !!!!" };
        }
Exemplo n.º 14
0
        public static RelationBrowsePageModel GetRelationBrowsePageModel(long entityTypeId, int page)
        {
            var pageModel = new RelationBrowsePageModel();
            var pageSize = 20;
            var skip = page * pageSize;
            var context = new AdminDbContext();
            var relationType = context.RelationTypes.Find(entityTypeId);
            var totalResult = relationType.Relations.Count();
            pageModel.Type = relationType.Name;
            pageModel.Relations = relationType.Relations.OrderByDescending(rt => rt.Id).Skip(skip).Take(pageSize)
                .Select(r => new RelationCardModel
                {
                    Id = r.Id,
                    Attributes = r.Attributes.Take(3).Select(attr => new AttributeDisplayModel
                    {
                        Name = attr.Name,
                        Value = attr.Value
                    }),
                    Entities = r.RelationEntities.Select(re => new RelationCardEntity
                    {
                        Id = re.EntityId,
                        Name = re.Entity.Name,
                        Type = re.MemberType != null ? re.Type.Name : "",
                        EntityType = re.Entity.Type.Name
                    })
                });

            pageModel.TotalPages = totalResult % 20 == 0 ? totalResult / 20 : (totalResult / 20) + 1;
            pageModel.CurrentPage = page + 1;
            pageModel.CurrentEntityTypeId = entityTypeId;
            return pageModel;
        }
Exemplo n.º 15
0
 public static EntityTableModel GetEntityTableModel(long id)
 {
     var context = new AdminDbContext();
     var entity = context.Entities.Find(id);
     if (entity != null)
     {
         return new EntityTableModel() { Id = entity.Id, Type = entity.Type.Name, Name = entity.Name };
     }
     return null;
 }
Exemplo n.º 16
0
 public static bool CheckEntityByAttributeNameAndValue(int entityType, string name, string value, AdminDbContext context = null)
 {
     context = context ?? new AdminDbContext();
     return context.Entities.Any(e => e.Type.Code.Equals(entityType) && e.Attributes.Any(attr => attr.Name.Equals(name) && attr.Value.Equals(value)));
 }
Exemplo n.º 17
0
 public static async Task<Utils.Messages.Response> DeleteRelationAsync(long id)
 {
     var response = new Response();
     var context = new AdminDbContext();
     var relation = context.Relations.Find(id);
     if (relation != null)
     {
         context.Relations.Remove(relation);
         await context.SaveChangesAsync();
     }
     return response;
 }
Exemplo n.º 18
0
 public static RelationDisplayModel GetRelationDisplayModel(long id)
 {
     var context = new AdminDbContext();
     var relation = context.Relations.Find(id);
     if (relation != null)
     {
         return new RelationDisplayModel() { Id = relation.Id, Type = relation.Type.Name };
     }
     return null;
 }
Exemplo n.º 19
0
 public static AddEntityRelationModel GetEntityRelationModel(long id)
 {
     var context = new AdminDbContext();
     var entity = context.Entities.Find(id);
     var entityRelation = new AddEntityRelationModel
     {
         Id = entity.Id,
         Name = entity.Name
     };
     return entityRelation;
 }
Exemplo n.º 20
0
        public static async Task<Response> AddEntityRelation(AddEntityRelationModel addEntityRelationModel)
        {
            var response = ValidateEntityRelation(addEntityRelationModel);
            if (!response.Success)
            {
                return response;
            }
            var relation = new Relation() { TypeId = addEntityRelationModel.RelationTypeId };
            relation.RelationEntities.Add(new RelationEntity { EntityId = addEntityRelationModel.Id });
            relation.RelationEntities.Add(new RelationEntity { EntityId = addEntityRelationModel.OtherEntityId });

            var context = new AdminDbContext();
            context.Relations.Add(relation);
            await context.SaveChangesAsync();
            return response;
        }
 public static async Task<Utils.Messages.Response> DeleteEntiTypeAsync(long id)
 {
     var response = new Response();
     var context = new AdminDbContext();
     var entityType = context.EntityTypes.Find(id);
     if(entityType!=null)
     {
         context.EntityTypes.Remove(entityType);
         await context.SaveChangesAsync();
     }
     return response;
 }
Exemplo n.º 22
0
 public static IEnumerable<object> GetEntities(string query)
 {
     var context = new AdminDbContext();
     var response = context.Entities.Where(e => e.Name.Contains(query ?? "")).OrderBy(e => e.Name).Take(25).Select(o => new { id = o.Id, text = o.Name });
     return response;
 }
Exemplo n.º 23
0
 public static IEnumerable<DateAmount> GetDateAmount(int entityId, int entityCode, int relationEntityCode)
 {
     var context = new AdminDbContext();
     var entity = context.Entities.Find(entityId);
     //var relations = entity.RelationEntities.Where(re => re.MemberType == entityCode)
     //.Select(re => re.Relation)
     //.Where(r => r.Attributes.Any(attr => attr.Name.Equals("Amount"))&&r.Attributes.Any(attr1=>attr1.Name.Equals("Contract date"))).Distinct();
     var relations = context.Relations.Where(r => r.RelationEntities.Any(re => re.EntityId.Equals(entityId) && re.MemberType == entityCode) && r.RelationEntities.Any(re1 => re1.MemberType == relationEntityCode) && r.Attributes.Any(attr => attr.Name.Equals("Amount")) && r.Attributes.Any(attr1 => attr1.Name.Equals("Contract date")));
     var result = new List<DateAmount>();
     foreach (var relation in relations)
     {
         var amount = Convert.ToDecimal(relation.Attributes.First(attr => attr.Name.Equals("Amount")).Value);
         var entityName = relation.Attributes.First(attr => attr.Name.Equals("Contract date")).Value;
         if (result.Any(r => r.Date.Equals(entityName)))
         {
             result.First(r => r.Date.Equals(entityName)).Amount += amount;
         }
         else
         {
             var entityAmount = new DateAmount() { Amount = amount, Date = entityName };
             result.Add(entityAmount);
         }
     }
     return result;
 }
Exemplo n.º 24
0
        public static IEnumerable<ApiProgressModel> UpdateETenders(int onPage, int requests)
        {
            var tenderUrl = "http://etender.gov.md/json/tenderList?rows=" + onPage;
            var index = 0;
            for (var request = 1; request <= requests; request++)
            {
                var context = new AdminDbContext();
                var tenderType = context.EntityTypes.FirstOrDefault(et => et.Code.Equals(3));
                var bankType = context.EntityTypes.FirstOrDefault(et => et.Code.Equals(9));
                var accountOwnerRelationType = context.RelationTypes.First(rt => rt.Code.Equals(11));
                var tenderCreatorType = context.RelationTypes.First(rt => rt.Code.Equals(5));

                var url = tenderUrl + "&page=" + request;
                yield return new ApiProgressModel { Message = "Start to collect data" };
                var tenderResultObject = APIClient.GetApiObject<Models.ETender.RootObject>(url);
                var totalRecords = tenderResultObject.rows.Count();
                yield return new ApiProgressModel { Message = "Got " + totalRecords + " records" };

                foreach (var row in tenderResultObject.rows)
                {
                    index++;
                    var progress = new ApiProgressModel();
                    if (!context.Entities.Any(e => e.TypeId.Equals(tenderType.Id) && e.Attributes.Any(attr => attr.Name.Equals("ETender Id") && attr.Value.Equals(row.id.ToString()))))
                    {
                        var entity = new Entity();
                        entity.TypeId = tenderType.Id;
                        entity.Name = row.tenderData.goodsDescr;
                        context.Entities.Add(entity);
                        yield return new ApiProgressModel { Message = "Creating new Tender entity " + entity.Name };
                        entity.Attributes.Add(new EntityAttribute() { Name = "ETender Id", Value = row.id.ToString() });
                        entity.Attributes.Add(new EntityAttribute() { Name = "Tender type", Value = row.tenderType.mdValue ?? string.Empty });
                        entity.Attributes.Add(new EntityAttribute() { Name = "Tender status at " + row.refCurrentStatusDate, Value = row.tenderStatus.mdValue });
                        entity.Attributes.Add(new EntityAttribute() { Name = "Tender open date", Value = row.refTendeOpenDate ?? string.Empty });
                        entity.Attributes.Add(new EntityAttribute() { Name = "Registration number ", Value = row.regNumber ?? string.Empty });
                        entity.Attributes.Add(new EntityAttribute() { Name = "Goods", Value = row.tenderData.goods.mdValue ?? string.Empty });
                        entity.Attributes.Add(new EntityAttribute() { Name = "Tender status", Value = row.tenderData.status.mdValue ?? string.Empty });
                        entity.Attributes.Add(new EntityAttribute() { Name = "Language", Value = row.tenderData.language.mdValue ?? string.Empty });
                        entity.Attributes.Add(new EntityAttribute() { Name = "Place offers at", Value = row.tenderData.pressOffersPlace ?? string.Empty });
                        entity.Attributes.Add(new EntityAttribute() { Name = "Place offers until", Value = row.tenderData.pressOffersDate ?? string.Empty });
                        entity.Attributes.Add(new EntityAttribute() { Name = "Open date time", Value = row.tenderData.deliveryTerms.mdValue ?? string.Empty });
                        entity.Attributes.Add(new EntityAttribute() { Name = "Notes", Value = row.notes ?? string.Empty });
                        entity.References.Add(new EntityReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/proceduricard?pid=" + row.id });

                        var entityCode = row.stateOrg.orgLegalForm != null ? row.stateOrg.orgLegalForm.id : 590;
                        var entityType = context.EntityTypes.FirstOrDefault(et => et.Code.Equals(entityCode));
                        if (entityType == null)
                        {
                            entityType = new EntityType() { Code = row.stateOrg.orgLegalForm.id, Name = row.stateOrg.orgLegalForm.mdValue };
                            context.EntityTypes.Add(entityType);
                            yield return new ApiProgressModel { Message = "New entity type added  " + entityType.Name};
                        }
                        var stateEntity = context.Entities.FirstOrDefault(e => e.Type.Code.Equals(entityType.Code) && e.Attributes.Any(attr => attr.Name.Equals("Code") && attr.Value.Equals(row.stateOrg.code)));

                        if (stateEntity == null)
                        {
                            stateEntity = new Entity();
                            stateEntity.Name = row.stateOrg.orgName;
                            stateEntity.Type = entityType;
                            stateEntity.Attributes.Add(new EntityAttribute() { Name = "Code", Value = row.stateOrg.code ?? string.Empty });
                            stateEntity.Attributes.Add(new EntityAttribute() { Name = "ETender Id", Value = row.stateOrg.id.ToString() });
                            stateEntity.Attributes.Add(new EntityAttribute() { Name = "Address", Value = row.stateOrg.address ?? string.Empty });
                            stateEntity.Attributes.Add(new EntityAttribute() { Name = "Account", Value = row.stateOrg.account ?? string.Empty });
                            stateEntity.Attributes.Add(new EntityAttribute() { Name = "Treasuty account", Value = row.stateOrg.treasutyAcc ?? string.Empty });
                            stateEntity.Attributes.Add(new EntityAttribute() { Name = "Fiscal code", Value = row.stateOrg.fiscalCode != null ? row.stateOrg.fiscalCode.ToString() : string.Empty });
                            stateEntity.Attributes.Add(new EntityAttribute() { Name = "Account", Value = row.stateOrg.account ?? string.Empty });
                            stateEntity.Attributes.Add(new EntityAttribute() { Name = "Bank account", Value = row.stateOrg.bankAccount!=null?row.stateOrg.bankAccount.ToString():string.Empty });
                            stateEntity.Attributes.Add(new EntityAttribute() { Name = "Phone", Value = row.stateOrg.phone ?? string.Empty });
                            stateEntity.Attributes.Add(new EntityAttribute() { Name = "Fax", Value = row.stateOrg.fax ?? string.Empty });
                            stateEntity.Attributes.Add(new EntityAttribute() { Name = "Email", Value = row.stateOrg.email ?? string.Empty });
                            stateEntity.References.Add(new EntityReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/proceduricard?pid=" + row.id });

                            context.Entities.Add(stateEntity);
                            yield return new ApiProgressModel { Message = "Creating " + entityType.Name + " " + stateEntity.Name };
                        }

                        if (row.stateOrg.bank != null)
                        {
                            var bank = context.Entities.FirstOrDefault(e => e.TypeId.Equals(bankType.Id) && e.Attributes.Any(attr => attr.Name.Equals("BIC") && attr.Value.Equals(row.stateOrg.bank.sapiCode)));
                            if (bank == null)
                            {
                                bank = new Entity();
                                bank.Name = row.stateOrg.bank.mdShort;
                                bank.Type = bankType;
                                bank.Attributes.Add(new EntityAttribute() { Name = "Short Name", Value = row.stateOrg.bank.mdShort ?? string.Empty });
                                bank.Attributes.Add(new EntityAttribute() { Name = "mfo Code", Value = row.stateOrg.bank.mfoCode ?? string.Empty });
                                bank.Attributes.Add(new EntityAttribute() { Name = "Fiscal Code", Value = row.stateOrg.bank.fiscalCode ?? string.Empty });
                                bank.Attributes.Add(new EntityAttribute() { Name = "BIC", Value = row.stateOrg.bank.sapiCode ?? string.Empty });
                                bank.References.Add(new EntityReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/proceduricard?pid=" + row.id });
                                context.Entities.Add(bank);
                                yield return new ApiProgressModel { Message = "Creating entity Bank" + bank.Name };
                            }

                            if (!context.Relations.Any(r => r.TypeId.Equals(accountOwnerRelationType.Id) && r.RelationEntities.Any(re => re.EntityId.Equals(stateEntity.Id) && r.RelationEntities.Any(re1 => re1.EntityId.Equals(bank.Id)))))
                            {
                                var bankRelation = new Relation();
                                bankRelation.TypeId = accountOwnerRelationType.Id;
                                bankRelation.Type = accountOwnerRelationType;
                                bankRelation.RelationEntities.Add(new RelationEntity { Entity = bank });
                                bankRelation.RelationEntities.Add(new RelationEntity { Entity = stateEntity });
                                bankRelation.Attributes.Add(new RelationAttribute { Name = "Account", Value = row.stateOrg.account ?? string.Empty });
                                bankRelation.References.Add(new RelationReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/proceduricard?pid=" + row.id });
                                context.Relations.Add(bankRelation);
                            }
                        }
                        var relation = new Relation();
                        relation.Type = tenderCreatorType;
                        relation.RelationEntities.Add(new RelationEntity { Entity = stateEntity });
                        relation.RelationEntities.Add(new RelationEntity { Entity = entity });
                        relation.References.Add(new RelationReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/proceduricard?pid=" +row.id});
                        context.Relations.Add(relation);
                        context.SaveChanges();
                        yield return new ApiProgressModel { Message = index +" Saved!" };

                    }
                    else
                    {
                        yield return new ApiProgressModel { Message="Tender with ETender Id = " + row.id };
                    }
                }

            }
            yield return new ApiProgressModel { Message = "Processing data finished !!!!" };
        }
Exemplo n.º 25
0
 public static RelationAddEditModel GetRelationEditModel(long id)
 {
     var context = new AdminDbContext();
     var relation = context.Relations.Find(id);
     if (relation != null)
     {
         return new RelationAddEditModel() { Id = relation.Id, TypeId = relation.TypeId };
     }
     return null;
 }
        public static async Task<Utils.Messages.Response> EditEntiTypeAsync(EntityTypeAddEditModel entityTypeModel)
        {

            var response = new Response();
            var context = new AdminDbContext();
            if (context.EntityTypes.Any(u => u.Code.Equals(entityTypeModel.Code)&&!u.Id.Equals(entityTypeModel.Id)))
            {
                response.AddMessage(false, "This code is already registered on another entity", ResponseMessageType.Warning);
            }
            else
            {
                var entityType = context.EntityTypes.Find(entityTypeModel.Id);
                entityType.Code = entityTypeModel.Code;
                entityType.Name = entityTypeModel.Name;
                await context.SaveChangesAsync();
            }
            return response;
        }
 public static RelationTypeAddEditModel GetRelationTypeEditModel(long id)
 {
     var context = new AdminDbContext();
     var relationType = context.RelationTypes.Find(id);
     if (relationType != null)
     {
         return new RelationTypeAddEditModel() { Id = relationType.Id, Code = relationType.Code, Name = relationType.Name };
     }
     return null;
 }
 internal static IEnumerable<HomePageRelationTypeDisplayModel> GetHomeRelationTypes(AdminDbContext context=null)
 {
     context = context ?? new AdminDbContext();
     return context.RelationTypes.OrderBy(rt => rt.Name).Where(rt=>rt.Relations.Any()).Select(rt => new HomePageRelationTypeDisplayModel() { Id = rt.Id, Name = rt.Name, Count = rt.Relations.Count() });
 }
 public static EntityTypeAddEditModel GetEntityTypeEditModel(long id)
 {
     var context = new AdminDbContext();
     var entityType = context.EntityTypes.Find(id);
     if (entityType != null)
     {
         return new EntityTypeAddEditModel() { Id = entityType.Id, Code = entityType.Code, Name = entityType.Name };
     }
     return null;
 }
Exemplo n.º 30
0
 public static EntityDisplayModel GetEntity(long id)
 {
     var context = new AdminDbContext();
     var entity = context.Entities.Find(id);
     var model = new EntityDisplayModel();
     model.Id = entity.Id;
     model.Image = entity.Image ?? entity.Type.DefaultImage;
     model.Name = entity.Name;
     model.Type = entity.Type.Name;
     model.Description = entity.Description;
     model.Attributes = entity.Attributes.Select(a => new AttributeDisplayModel { Name = a.Name, Value = a.Value });
     model.RelationTypes = entity.RelationEntities.Select(re => re.Relation.Type).Distinct().Select(rt => new SiteRelationTypeDisplayModel { Id = rt.Id, Name = rt.Name }).ToList();
     // var relations = entity.RelationEntities.Select(re => re.Relation).Select(r => new SiteRelationDisplayModel() {TypeId=r.TypeId, Type= r.Type.Name, Entities = r.RelationEntities.Where(re => re.EntityId != entity.Id).Select(re => re.Entity).Select(e=> new EntityTableModel(){Id = e.Id, Name = e.Name, Type = e.Type.Name, Image = e.Image??e.Type.DefaultImage})});
     var relations = entity.RelationEntities.Select(re => re.Relation);//.Select(r => new SiteRelationDisplayModel() { TypeId = r.TypeId, Type = r.Type.Name, Attributes = r.Attributes.Select(a => new AttributeDisplayModel { Name = a.Name, Value = a.Value }), Entities = r.RelationEntities.Where(re => re.EntityId != entity.Id).Select(re => re.Entity).Select(e => new EntityTableModel() { Id = e.Id, Name = e.Name, Type = e.Type.Name, Image = e.Image ?? e.Type.DefaultImage }) });
     for (var i=0; i< model.RelationTypes.Count(); i++)
     {
         var relationType = model.RelationTypes.ElementAt(i);
         relationType.TotalRelations = relations.Where(r => r.TypeId.Equals(relationType.Id)).Count();
         relationType.Relations.AddRange(relations.Where(r => r.TypeId.Equals(relationType.Id)).OrderByDescending(r => r.Id).Take(5).Select(r => new SiteRelationDisplayModel() { TypeId = r.TypeId, Type = r.Type.Name, Attributes = r.Attributes.Select(a => new AttributeDisplayModel { Name = a.Name, Value = a.Value }), Entities = r.RelationEntities.Where(re => re.EntityId != entity.Id).Select(re => re.Entity).Select(e => new EntityTableModel() { Id = e.Id, Name = e.Name, Type = e.Type.Name, Image = e.Image ?? e.Type.DefaultImage }) }));
     }
     model.References = entity.References.Select(r => new ReferenceDisplayModel { Description = r.Description, Document = r.Document, Link = r.Link, Title = r.Title });
     return model;
 }