コード例 #1
0
ファイル: ModelNameService.cs プロジェクト: SyPham/DMR
        private async Task <bool> CheckExistBPFC(CloneDto clone)
        {
            var bpfc = await _repoBPFC.FindAll().AnyAsync(x => x.ModelNameID == clone.ModelNameID &&
                                                          x.ModelNoID == clone.ModelNOID &&
                                                          x.ArticleNoID == clone.ArticleNOID &&
                                                          x.ArtProcessID == clone.ArtProcessID);

            return(bpfc);
        }
コード例 #2
0
        public async Task CloneGlueByCloneDto(CloneDto clone, BPFCEstablish bpfc, BPFCEstablish bpfcClone)
        {
            var gluesData = new List <Glue>();

            if (bpfcClone.Glues == null)
            {
                gluesData = bpfc.Glues.Where(x => x.isShow == true).ToList();
            }
            else
            {
                var list2 = bpfcClone.Glues.Where(x => x.isShow == true).Select(x => x.Name);
                var list1 = bpfc.Glues.Where(x => x.isShow == true).Select(x => x.Name);
                var check = list1.Except(list2);
                gluesData = bpfc.Glues.Where(x => x.isShow == true && check.Contains(x.Name)).ToList();
            }
            if (gluesData.Count == 0)
            {
                return;
            }
            foreach (var item in gluesData)
            {
                var glue = new Glue();
                glue.Code = await this.GenatateGlueCode(item.Code);

                glue.Name            = item.Name;
                glue.isShow          = true;
                glue.Consumption     = item.Consumption;
                glue.CreatedBy       = clone.CloneBy;
                glue.MaterialID      = item.MaterialID;
                glue.KindID          = item.KindID;
                glue.PartID          = item.PartID;
                glue.ExpiredTime     = item.ExpiredTime;
                glue.BPFCEstablishID = bpfcClone.ID;
                _repoGlue.Add(glue);
                await _repoGlue.SaveAll();

                var glueIngredients    = item.GlueIngredients.ToList();
                var glueIngredientData = glueIngredients.Select(x => new GlueIngredient
                {
                    GlueID       = glue.ID,
                    IngredientID = x.IngredientID,
                    Allow        = x.Allow,
                    Percentage   = x.Percentage,
                    CreatedDate  = DateTime.Now.ToString("MMMM dd, yyyy HH:mm:ss tt"),
                    Position     = x.Position,
                }).ToList();
                _repoGlueIngredient.AddRange(glueIngredientData);
                await _repoGlueIngredient.SaveAll();
            }
        }
コード例 #3
0
        public async Task <BPFCEstablish> FindBPFCByCloneDto(CloneDto clone, ArtProcess artProcess)
        {
            var bpfcForClone = await _repoBPFC.FindAll()
                               .Include(x => x.ModelName)
                               .Include(x => x.ModelNo)
                               .Include(x => x.ArtProcess)
                               .Include(x => x.ArticleNo)
                               .Include(x => x.Glues)
                               .ThenInclude(x => x.GlueIngredients)
                               .Include(x => x.Plans)
                               .FirstOrDefaultAsync(x => x.ModelNameID == clone.ModelNameID &&
                                                    x.ModelNoID == clone.ModelNOID &&
                                                    x.ArticleNoID == clone.ArticleNOID &&
                                                    x.ArtProcessID == artProcess.ID);

            return(bpfcForClone);
        }
コード例 #4
0
        public async Task <object> CloneBPFC(CloneDto clone)
        {
            try
            {
                var bpfc = await _repoBPFC.FindAll()
                           .Include(x => x.ModelName)
                           .Include(x => x.ModelNo)
                           .Include(x => x.ArtProcess)
                           .Include(x => x.ArticleNo)
                           .Include(x => x.Glues).ThenInclude(x => x.GlueIngredients)
                           .Include(x => x.Plans)
                           .FirstOrDefaultAsync(x => x.ID == clone.BPFCID);

                var artNo = await FindArticleNoByCloneDto(clone);

                clone.ArticleNOID = artNo.ID;
                var artProcess = await FindArtProcessByCloneDto(clone);

                var bpfcForClone = await FindBPFCByCloneDto(clone, artProcess);

                // Not exists bpfc -> add new -> clone
                if (bpfcForClone == null)
                {
                    var bpfcClone = await CreateNewBPFCByCloneDto(clone, artProcess.ID);
                    await CloneGlueByCloneDto(clone, bpfc, bpfcClone);
                }
                else
                {
                    await CloneGlueByCloneDto(clone, bpfc, bpfcForClone);
                }
                return(new
                {
                    message = "The BPFC has been cloned!",
                    status = true
                });
            }
            catch (System.Exception ex)
            {
                Console.WriteLine("Loi clone model name", ex);
                return(new
                {
                    message = "",
                    status = false
                });
            }
        }
コード例 #5
0
        public async Task <ArtProcess> FindArtProcessByCloneDto(CloneDto clone)
        {
            var artProcess = await _repoArtProcess.FindAll().FirstOrDefaultAsync(x => x.ArticleNoID == clone.ArticleNOID && x.ProcessID == clone.ArtProcessID);

            if (artProcess != null)
            {
                return(artProcess);
            }
            else
            {
                var artProcessData = new ArtProcess();
                artProcessData.ArticleNoID = clone.ArticleNOID;
                artProcessData.ProcessID   = clone.ArtProcessID;
                _repoArtProcess.Add(artProcessData);
                await _repoGlueIngredient.SaveAll();

                return(artProcessData);
            }
        }
コード例 #6
0
        public async Task <ArticleNo> FindArticleNoByCloneDto(CloneDto clone)
        {
            var artNo = await _repoArticleNo.FindAll().FirstOrDefaultAsync(x => x.ModelNoID == clone.ModelNOID);

            if (artNo == null)
            {
                return(artNo);
            }
            else
            {
                var artNoData = new ArticleNo();
                artNoData.ModelNoID = clone.ModelNOID;
                artNoData.Name      = clone.Name;
                _repoArticleNo.Add(artNoData);
                await _repoArticleNo.SaveAll();

                return(artNoData);
            }
        }
コード例 #7
0
        public async Task <BPFCEstablish> CreateNewBPFCByCloneDto(CloneDto clone, int artProcessID)
        {
            var bpfcData = new BPFCEstablish();

            bpfcData.ModelNameID = clone.ModelNameID;
            bpfcData.ModelNoID   = clone.ModelNOID;

            bpfcData.ArticleNoID  = clone.ArticleNOID;
            bpfcData.ArtProcessID = artProcessID;

            bpfcData.ApprovalStatus = false;
            bpfcData.FinishedStatus = false;
            bpfcData.CreatedBy      = clone.CloneBy;
            bpfcData.ApprovalBy     = 0;
            bpfcData.CreatedBy      = clone.CloneBy;
            bpfcData.UpdateTime     = DateTime.Now;
            bpfcData.BuildingDate   = DateTime.Now;
            bpfcData.CreatedDate    = DateTime.Now;
            _repoBPFC.Add(bpfcData);
            await _repoBPFC.SaveAll();

            return(bpfcData);
        }
コード例 #8
0
ファイル: ModelNameService.cs プロジェクト: SyPham/DMR
        public async Task <object> CloneModelName(CloneDto clone)
        {
            try
            {
                using (var scope = new TransactionScope(TransactionScopeOption.Required,
                                                        new TransactionOptions {
                    IsolationLevel = IsolationLevel.ReadCommitted
                }, TransactionScopeAsyncFlowOption.Enabled))
                {
                    var bpfc = await _repoBPFC.FindAll()
                               .Include(x => x.ModelName)
                               .Include(x => x.ModelNo)
                               .Include(x => x.ArtProcess)
                               .Include(x => x.ArticleNo)
                               .Include(x => x.Glues).ThenInclude(x => x.GlueIngredients)
                               .Include(x => x.Plans)
                               .FirstOrDefaultAsync(x => x.ID == clone.BPFCID);

                    var artProcessFirstAdd = _repoArtProcess.FindAll().FirstOrDefaultAsync(x => x.ArticleNoID == bpfc.ArticleNoID && x.ProcessID == clone.ArtProcessID);
                    if (bpfc == null)
                    {
                        return new
                               {
                                   message = "The BPFC is invalid!",
                                   status  = false
                               }
                    }
                    ;

                    if (artProcessFirstAdd.Result != null)
                    {
                        if (clone.ArtProcessID == artProcessFirstAdd.Result.ProcessID)
                        {
                            clone.ArtProcessID = artProcessFirstAdd.Result.ArticleNoID;
                            await CheckExistBPFC(clone);

                            return(new
                            {
                                message = "The BPFC exists!",
                                status = false
                            });
                        }
                    }

                    var artProcessData = new ArtProcess();
                    artProcessData.ArticleNoID = clone.ArticleNOID;
                    artProcessData.ProcessID   = clone.ArtProcessID;
                    _repoArtProcess.Add(artProcessData);
                    await _repoArtProcess.SaveAll();

                    var artProcessLastAdd = _repoArtProcess.FindAll().FirstOrDefaultAsync(x => x.ArticleNoID == bpfc.ArticleNoID && x.ProcessID == clone.ArtProcessID);

                    var bpfcData = new BPFCEstablish();
                    bpfcData.ModelNameID  = clone.ModelNameID;
                    bpfcData.ModelNoID    = clone.ModelNOID;
                    bpfcData.ArticleNoID  = clone.ArticleNOID;
                    bpfcData.ArtProcessID = artProcessLastAdd.Result.ID;

                    bpfcData.ApprovalStatus = false;
                    bpfcData.FinishedStatus = false;
                    bpfcData.CreatedBy      = clone.CloneBy;
                    bpfcData.ApprovalBy     = 0;
                    bpfcData.CreatedBy      = clone.CloneBy;
                    bpfcData.UpdateTime     = DateTime.Now;
                    bpfcData.BuildingDate   = DateTime.Now;
                    bpfcData.CreatedDate    = DateTime.Now;
                    _repoBPFC.Add(bpfcData);
                    await _repoBPFC.SaveAll();

                    var gluesData = bpfc.Glues.ToList();
                    foreach (var item in gluesData)
                    {
                        var glue = new Glue();

                        glue.Code = await this.GenatateGlueCode(item.Code);

                        glue.Name            = item.Name;
                        glue.Consumption     = item.Consumption;
                        glue.CreatedBy       = clone.CloneBy;
                        glue.MaterialID      = item.MaterialID;
                        glue.KindID          = item.KindID;
                        glue.PartID          = item.PartID;
                        glue.ExpiredTime     = item.ExpiredTime;
                        glue.BPFCEstablishID = bpfcData.ID;
                        _repoGlue.Add(glue);
                        await _repoGlue.SaveAll();

                        var glueIngredients    = item.GlueIngredients.ToList();
                        var glueIngredientData = glueIngredients.Select(x => new GlueIngredient
                        {
                            GlueID       = glue.ID,
                            IngredientID = x.IngredientID,
                            Allow        = x.Allow,
                            Percentage   = x.Percentage,
                            CreatedDate  = DateTime.Now.ToString("MMMM dd, yyyy HH:mm:ss tt"),
                            Position     = x.Position,
                        }).ToList();
                        _repoGlueIngredient.AddRange(glueIngredientData);
                        await _repoGlueIngredient.SaveAll();
                    }

                    scope.Complete();
                }
                return(new
                {
                    message = "The BPFC has been cloned!",
                    status = true
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine("Loi clone model name", ex);
                return(new
                {
                    message = "",
                    status = false
                });
            }
        }
コード例 #9
0
        public async Task <object> CloneModelName(CloneDto clone)
        {
            try
            {
                using (var scope = new TransactionScope(TransactionScopeOption.Required,
                                                        new TransactionOptions {
                    IsolationLevel = IsolationLevel.ReadCommitted
                }, TransactionScopeAsyncFlowOption.Enabled))
                {
                    var bpfc = await _repoBPFC.FindAll()
                               .Include(x => x.ModelName)
                               .Include(x => x.ModelNo)
                               .Include(x => x.ArtProcess)
                               .Include(x => x.ArticleNo)
                               .Include(x => x.Glues).ThenInclude(x => x.GlueIngredients)
                               .Include(x => x.Plans)
                               .FirstOrDefaultAsync(x => x.ID == clone.BPFCID);

                    if (bpfc == null)
                    {
                        return new
                               {
                                   message = "The BPFC is invalid!",
                                   status  = false
                               }
                    }
                    ;
                    /// Case 1:
                    // IF keep model Name
                    if (bpfc.ModelNameID == clone.ModelNameID)
                    {
                        /// Case 1.1:
                        // Change model NO
                        if (bpfc.ModelNoID != clone.ModelNOID)
                        {
                            var artProcess = await FindArtProcessByCloneDto(clone);

                            var bpfcForClone = await FindBPFCByCloneDto(clone, artProcess);

                            // Not exists bpfc -> add new -> clone
                            if (bpfcForClone == null)
                            {
                                var bpfcClone = await CreateNewBPFCByCloneDto(clone, artProcess.ID);
                                await CloneGlueByCloneDto(clone, bpfc, bpfcClone);
                            }
                            else
                            {
                                await CloneGlueByCloneDto(clone, bpfc, bpfcForClone);
                            }
                        }
                        // IF keep model NO
                        if (bpfc.ModelNoID == clone.ModelNOID)
                        {
                            var artProcess = await FindArtProcessByCloneDto(clone);

                            var bpfcForClone = await FindBPFCByCloneDto(clone, artProcess);

                            if (bpfcForClone == null)
                            {
                                var bpfcClone = await CreateNewBPFCByCloneDto(clone, artProcess.ID);
                                await CloneGlueByCloneDto(clone, bpfc, bpfcClone);
                            }
                            else
                            {
                                await CloneGlueByCloneDto(clone, bpfc, bpfcForClone);
                            }
                        }
                    }
                    /// Case 2:
                    // Change different ModelName
                    if (bpfc.ModelNameID != clone.ModelNameID)
                    {
                        var artProcess = await FindArtProcessByCloneDto(clone);

                        // Check BPFC
                        var bpfcForClone = await FindBPFCByCloneDto(clone, artProcess);

                        // Not exists bpfc -> add new BPFC -> CloneGlueByCloneDto
                        if (bpfcForClone == null)
                        {
                            var cloneBPFC = await CreateNewBPFCByCloneDto(clone, artProcess.ID);
                            await CloneGlueByCloneDto(clone, bpfc, cloneBPFC);
                        }
                        else
                        {
                            await CloneGlueByCloneDto(clone, bpfc, bpfcForClone);
                        }
                    }
                    scope.Complete();
                }
                return(new
                {
                    message = "The BPFC has been cloned!",
                    status = true
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine("Loi clone model name", ex);
                return(new
                {
                    message = "",
                    status = false
                });
            }
        }
コード例 #10
0
ファイル: ModelNameController.cs プロジェクト: SyPham/DMR
 public async Task <IActionResult> Clone(CloneDto clone)
 {
     return(Ok(await _modelNameService.CloneModelName(clone)));
 }