public async Task Scrap(AuthorizedDto <PipelineDto> dto)
        {
            await Execute(async() => {
                using (UnitOfWork db = new UnitOfWork())
                {
                    PipelineEntity pipeline = await db.GetRepo <PipelineEntity>().FirstOrDefault(
                        p => p.id == dto.Data.Id.Value
                        );

                    foreach (PipelineItemEntity pipelineItem in pipeline.PipelineItems)
                    {
                        pipelineItem.pipeline_id = null;

                        pipelineItem.InputPipelineItems.Clear();
                        pipelineItem.OutputPipelineItems.Clear();
                        pipelineItem.InputStorageCells.Clear();
                        pipelineItem.OutputStorageCells.Clear();
                    }

                    foreach (StorageCellEntity storageCell in pipeline.StorageCells)
                    {
                        storageCell.pipeline_id = null;
                    }

                    await db.Save();
                }
            });
        }
        public PipelineModel ToPipelineModel(PipelineEntity pipeline)
        {
            PipelineModel pipelineModel = new PipelineModel();

            pipelineModel.Id          = pipeline.id;
            pipelineModel.CompanyId   = pipeline.company_id;
            pipelineModel.Connections = new List <PipelineItemConnectionModel>();

            foreach (PipelineItemEntity pipelineItem in pipeline.PipelineItems)
            {
                PipelineItemConnectionModel connectionModel = new PipelineItemConnectionModel();

                connectionModel.PipelineItem = pipelineItem.ToModel <PipelineItemModel>();

                connectionModel.InputPipelineItems = ModelEntityMapper.Mapper.Map <ICollection <PipelineItemModel> >(
                    pipelineItem.InputPipelineItems
                    );

                connectionModel.OutputPipelineItems = ModelEntityMapper.Mapper.Map <ICollection <PipelineItemModel> >(
                    pipelineItem.OutputPipelineItems
                    );

                connectionModel.InputStorageCells = ModelEntityMapper.Mapper.Map <ICollection <StorageCellModel> >(
                    pipelineItem.InputStorageCells
                    );

                connectionModel.OutputStorageCells = ModelEntityMapper.Mapper.Map <ICollection <StorageCellModel> >(
                    pipelineItem.OutputStorageCells
                    );

                pipelineModel.Connections.Add(connectionModel);
            }

            return(pipelineModel);
        }
 public async Task <PipelineModel> Get(AuthorizedDto <PipelineDto> dto)
 {
     return(await Execute(async() => {
         using (UnitOfWork db = new UnitOfWork())
         {
             PipelineEntity pipeline = await db.GetRepo <PipelineEntity>().Get(dto.Data.Id.Value);
             return ToPipelineModel(pipeline);
         }
     }));
 }
Example #4
0
        public HrmResultEntity <bool> SavePipeline(PipelineEntity pipeline, List <PipelineStepType> pipelineStep, string dbName)
        {
            var par = new DynamicParameters();

            par.Add("@Id", pipeline.Id);
            par.Add("@Name", pipeline.Name);
            par.Add("@MenuId", pipeline.MenuId);
            par.Add("@Description", pipeline.Description);
            par.Add("@IsDefault", pipeline.IsDefault);
            par.Add("@CreatedBy", pipeline.CreatedBy);
            par.Add("@UpdatedBy", pipeline.UpdatedBy);
            par.Add("@DbName", dbName);
            par.Add("@PipelineStep", pipelineStep.ConvertToUserDefinedDataTable(), DbType.Object);
            return(Procedure("Pipeline_Update_SavePipeline", par));
        }
        public async Task <PipelineModel> Create(AuthorizedDto <PipelineDto> dto)
        {
            return(await Execute(async() => {
                using (UnitOfWork db = new UnitOfWork())
                {
                    CompanyEntity company = await db.GetRepo <CompanyEntity>().FirstOrDefault(
                        c => c.owner_id == dto.Data.CompanyId.Value
                        );

                    int[] pipelineItemIds = dto.Data.PipelineItemPlacements.Select(p => p.PipelineItemId.Value).ToArray();
                    int[] storageCellIds = dto.Data.StorageCellPlacements.Select(s => s.StorageCellId.Value).ToArray();

                    IList <PipelineItemEntity> pipelineItems = await db.GetRepo <PipelineItemEntity>().Get(
                        pipelineItem => pipelineItem.PipelineItemPrefab.company_id == company.owner_id
                        );

                    IList <StorageCellEntity> storageCells = await db.GetRepo <StorageCellEntity>().Get(
                        storageCell => storageCell.StorageCellPrefab.company_id == company.owner_id
                        );

                    PipelineItemEntity[] updatedPipelineItems = pipelineItems.Where(p => pipelineItemIds.Contains(p.id)).ToArray();
                    StorageCellEntity[] updatedStorageCells = storageCells.Where(s => storageCellIds.Contains(s.id)).ToArray();

                    this.ValidatePipelineItems(updatedPipelineItems, null);
                    this.ValidateStorageCells(updatedStorageCells, null);

                    this.UpdatePipelineItemPlacements(company, updatedPipelineItems, dto.Data.PipelineItemPlacements);
                    this.UpdateStorageCellPlacements(company, updatedStorageCells, dto.Data.StorageCellPlacements);

                    PipelineEntity pipeline = new PipelineEntity();
                    pipeline.company_id = company.owner_id;

                    await db.GetRepo <PipelineEntity>().Create(pipeline);

                    this.UpdatePipelineConnections(updatedPipelineItems, updatedStorageCells, dto.Data, pipeline);

                    await db.Save();

                    return ToPipelineModel(pipeline);
                }
            }));
        }
        private void UpdatePipelineConnections(
            ICollection <PipelineItemEntity> pipelineItems,
            ICollection <StorageCellEntity> storageCells,
            PipelineDto pipelineDto, PipelineEntity pipeline
            )
        {
            foreach (PipelineConnectionDto connection in pipelineDto.Connections)
            {
                PipelineItemEntity pipelineItemEntity = pipelineItems.FirstOrDefault(
                    pi => pi.id == connection.PipelineItemId.Value
                    );
                pipelineItemEntity.pipeline_id = pipeline.id;

                PipelineItemEntity[] inputPipelineItems = connection.InputPipelineItems.Select(
                    inputPipelineItem => pipelineItems.FirstOrDefault(pi => pi.id == inputPipelineItem.Id.Value)
                    ).ToArray();

                foreach (PipelineItemEntity pipelineItemToRemove in pipelineItemEntity.InputPipelineItems.Except(inputPipelineItems).ToArray())
                {
                    pipelineItemEntity.InputPipelineItems.Remove(pipelineItemToRemove);
                }

                foreach (PipelineItemEntity pipelineItemToAdd in inputPipelineItems.Except(pipelineItemEntity.InputPipelineItems).ToArray())
                {
                    pipelineItemEntity.InputPipelineItems.Add(pipelineItemToAdd);
                }


                PipelineItemEntity[] outputPipelineItems = connection.OutputPipelineItems.Select(
                    outputPipelineItem => pipelineItems.FirstOrDefault(pi => pi.id == outputPipelineItem.Id.Value)
                    ).ToArray();

                foreach (PipelineItemEntity pipelineItemToRemove in pipelineItemEntity.OutputPipelineItems.Except(outputPipelineItems).ToArray())
                {
                    pipelineItemEntity.OutputPipelineItems.Remove(pipelineItemToRemove);
                }

                foreach (PipelineItemEntity pipelineItemToAdd in outputPipelineItems.Except(pipelineItemEntity.OutputPipelineItems).ToArray())
                {
                    pipelineItemEntity.OutputPipelineItems.Add(pipelineItemToAdd);
                }


                StorageCellEntity[] inputStorageCells = connection.InputStorageCells.Select(
                    inputStorageCell => storageCells.FirstOrDefault(pi => pi.id == inputStorageCell.Id.Value)
                    ).ToArray();

                foreach (StorageCellEntity storageCell in inputStorageCells)
                {
                    storageCell.pipeline_id = pipeline.id;
                }

                foreach (StorageCellEntity storageCellToRemove in pipelineItemEntity.InputStorageCells.Except(inputStorageCells).ToArray())
                {
                    pipelineItemEntity.InputStorageCells.Remove(storageCellToRemove);
                }

                foreach (StorageCellEntity storageCellToAdd in inputStorageCells.Except(pipelineItemEntity.InputStorageCells).ToArray())
                {
                    pipelineItemEntity.InputStorageCells.Add(storageCellToAdd);
                }


                StorageCellEntity[] outputStorageCells = connection.OutputStorageCells.Select(
                    outputStorageCell => storageCells.FirstOrDefault(pi => pi.id == outputStorageCell.Id.Value)
                    ).ToArray();

                foreach (StorageCellEntity storageCell in outputStorageCells)
                {
                    storageCell.pipeline_id = pipeline.id;
                }

                foreach (StorageCellEntity storageCellToRemove in pipelineItemEntity.OutputStorageCells.Except(outputStorageCells).ToArray())
                {
                    pipelineItemEntity.OutputStorageCells.Remove(storageCellToRemove);
                }

                foreach (StorageCellEntity storageCellToAdd in outputStorageCells.Except(pipelineItemEntity.OutputStorageCells).ToArray())
                {
                    pipelineItemEntity.OutputStorageCells.Add(storageCellToAdd);
                }
            }
        }
Example #7
0
        public string SavePipeline(PipelineEntity pipeline, List <PipelineStepType> pipelineStep)
        {
            var response = this._pipelineRepository.SavePipeline(pipeline, pipelineStep, _dbName);

            return(JsonConvert.SerializeObject(response));
        }