Exemple #1
0
        public async Task <ResultObject> DeleteUnit(M_Unit unit)
        {
            var resultObj = new ResultObject {
                RowAffected = -1, ObjectValue = unit
            };

            using (var context = new MasterDbContext(contextOptions))
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        MySqlParameter[] sqlParams = new MySqlParameter[] {
                            new MySqlParameter("strId", unit.Id),
                            new MySqlParameter("strDelete_By", unit.Updated_By)
                        };


                        //Output Parameter no need to define. @`strId`
                        resultObj.RowAffected = await context.Database.ExecuteSqlCommandAsync("call sp_unit_delete( ?, ?)", parameters : sqlParams);

                        transaction.Commit();

                        return(resultObj);
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        throw ex;
                    }
                }
            }
        }
        public async Task <IActionResult> Edit([Bind("UnitCode,UnitName,UnitDesc,Id,Is_Active,Created_Date,Created_By,Updated_Date,Updated_By")] M_Unit m_Unit)
        {
            if (ModelState.IsValid)
            {
                m_Unit.Updated_By = await base.CurrentUserId();

                ResultObject resultObj;

                try
                {
                    using (var unitBll = new UnitBLL())
                    {
                        resultObj = await unitBll.UpdateUnit(m_Unit);

                        _cache.Remove("CACHE_MASTER_UNIT");
                    }

                    return(Json(new { success = true, data = (M_Unit)resultObj.ObjectValue, message = "Unit Update." }));
                }
                catch (Exception ex)
                {
                    return(Json(new { success = false, data = m_Unit, message = ex.Message }));
                }
            }

            var err = ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage).ToList();

            return(Json(new { success = false, errors = err, data = m_Unit, message = "Update Failed" }));
        }
Exemple #3
0
 internal MasterTableUnit()
 {
     KILO = new M_Unit {
         Name = "Kilo"
     };
     LITER = new M_Unit {
         Name = "Liter"
     };
     PIECES = new M_Unit {
         Name = "Pieces"
     };
 }
        private static long GeneratePartsForEachLevel(ProductStructureInput inputParameters,
                                                      ProductStructure productStructure, List <HashSet <long> > availableNodes, MasterTableArticleType articleTypes,
                                                      MasterTableUnit units, M_Unit[] unitCol, XRandom rng, int i, bool sampleWorkPlanLength,
                                                      TruncatedDiscreteNormal truncatedDiscreteNormalDistribution)
        {
            //Problem mit Algorithmus aus SYMTEP: bei ungünstigen Eingabeparametern gibt es auf manchen Fertigungsstufen keine Teile (0 Knoten)
            //-> Es fehlt wohl Nebenbedingung, dass Anzahl an Teilen auf jeden Fertigungsstufe mindestens 1 sein darf
            //-> Entsprechend wurde das hier angepasst
            var nodeCount = Math.Max(1, Convert.ToInt64(Math.Round(
                                                            Math.Pow(inputParameters.ComplexityRatio / inputParameters.ReutilisationRatio, i - 1) *
                                                            inputParameters.EndProductCount)));
            var nodesCurrentLevel = new Dictionary <long, Node>();

            productStructure.NodesPerLevel.Add(nodesCurrentLevel);
            var availableNodesOnThisLevel = new HashSet <long>();

            availableNodes.Add(availableNodesOnThisLevel);

            bool          toPurchase, toBuild;
            M_Unit        unit = null;
            M_ArticleType articleType;

            if (i == 1)
            {
                toPurchase  = false;
                toBuild     = true;
                unit        = units.PIECES;
                articleType = articleTypes.PRODUCT;
            }
            else if (i == inputParameters.DepthOfAssembly)
            {
                toPurchase  = true;
                toBuild     = false;
                articleType = articleTypes.MATERIAL;
            }
            else
            {
                toPurchase  = false;
                toBuild     = true;
                unit        = units.PIECES;
                articleType = articleTypes.ASSEMBLY;
            }

            for (long j = 0; j < nodeCount; j++)
            {
                unit = GeneratePartsForCurrentLevel(inputParameters, unitCol, rng, i, sampleWorkPlanLength,
                                                    truncatedDiscreteNormalDistribution, availableNodesOnThisLevel, j, unit, articleType, toPurchase,
                                                    toBuild, nodesCurrentLevel);
            }

            return(nodeCount);
        }
Exemple #5
0
        internal M_Unit[] Init(MasterDBContext context)
        {
            // Units
            var units = new M_Unit[]
            {
                KILO,
                LITER,
                PIECES
            };

            context.Units.AddRange(entities: units);
            context.SaveChanges();
            return(units);
        }
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private static M_Unit[] CreateUnits()
        {
            var units = new M_Unit[]
            {
                new M_Unit {
                    Name = "Kilo"
                },
                new M_Unit {
                    Name = "Litre"
                },
                new M_Unit {
                    Name = "Pieces"
                }
            };

            return(units);
        }
Exemple #7
0
        public static bool Update(UnitViewModel entity)
        {
            bool result = true;

            try
            {
                using (var db = new MarComContext())
                {
                    if (entity.Id == 0)
                    {
                        M_Unit unit = new M_Unit();
                        unit.Code        = entity.Code;
                        unit.Name        = entity.Name;
                        unit.Description = entity.Description;
                        unit.Is_Delete   = entity.Is_Delete;
                        unit.Create_By   = "Admin";

                        unit.Create_Date = DateTime.Now;

                        db.M_Unit.Add(unit);
                        db.SaveChanges();
                    }
                    else
                    {
                        M_Unit unit = db.M_Unit.Where(u => u.Id == entity.Id).FirstOrDefault();
                        if (unit != null)
                        {
                            unit.Code        = entity.Code;
                            unit.Name        = entity.Name;
                            unit.Description = entity.Description;

                            unit.Update_By   = "Admin";
                            unit.Update_Date = DateTime.Now;
                            db.SaveChanges();
                        }
                    }
                }
            }
            catch (Exception)
            {
                result = false;
            }
            return(result);
        }
Exemple #8
0
        public async Task <ResultObject> UpdateUnit(M_Unit unit)
        {
            var resultObj = new ResultObject {
                RowAffected = -1, ObjectValue = unit
            };

            using (var context = new MasterDbContext(contextOptions))
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        context.Entry(unit).State = EntityState.Modified;

                        MySqlParameter[] sqlParams = new MySqlParameter[] {
                            new MySqlParameter("strId", unit.Id),
                            new MySqlParameter("strUnitCode", unit.UnitCode),
                            new MySqlParameter("strUnitName", unit.UnitName),
                            new MySqlParameter("strUnitDesc", unit.UnitDesc),
                            new MySqlParameter("strIs_Active", unit.Is_Active),
                            new MySqlParameter("strCreated_By", unit.Updated_By)
                        };


                        //Output Parameter no need to define. @`strId`
                        resultObj.RowAffected = await context.Database.ExecuteSqlCommandAsync("call sp_unit_update(?, ?, ?, ?, ?, ?)", parameters : sqlParams);

                        transaction.Commit();

                        return(resultObj);
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        throw ex;
                    }
                }
            }
        }
Exemple #9
0
        public static bool Delete(int id)
        {
            bool result = true;

            try
            {
                using (var db = new MarComContext())
                {
                    M_Unit unit = db.M_Unit.Where(u => u.Id == id).FirstOrDefault();
                    if (unit != null)
                    {
                        unit.Is_Delete = true;
                        db.SaveChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                result = false;
            }
            return(result);
        }
Exemple #10
0
        public async Task <ResultObject> InsertUnit(M_Unit unit)
        {
            var resultObj = new ResultObject {
                RowAffected = -1, ObjectValue = unit
            };

            using (var context = new MasterDbContext(contextOptions))
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        MySqlParameter[] sqlParams = new MySqlParameter[] {
                            new MySqlParameter("strUnitCode", unit.UnitCode),
                            new MySqlParameter("strUnitName", unit.UnitName),
                            new MySqlParameter("strUnitDesc", unit.UnitDesc),
                            new MySqlParameter("strIs_Active", unit.Is_Active),
                            new MySqlParameter("strCreated_By", unit.Created_By)
                        };

                        resultObj.RowAffected = await context.Database.ExecuteSqlCommandAsync("call sp_unit_insert(@`strId`, ?, ?, ?, ?, ?)", parameters : sqlParams);

                        //new Unit after insert.
                        var newUnit = context.Unit.FromSql("SELECT * FROM m_unit WHERE Id = @`strId`;").ToListAsync();
                        resultObj.ObjectValue = newUnit.Result[0];

                        transaction.Commit();

                        return(resultObj);
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        throw ex;
                    }
                }
            }
        }
Exemple #11
0
 public bool Update(int id, M_Unit model)
 {
     throw new NotImplementedException();
 }
Exemple #12
0
 public bool Insert(M_Unit model)
 {
     throw new NotImplementedException();
 }
Exemple #13
0
        public static ResultResponse Update(UnitViewModel entity)
        {
            ResultResponse result = new ResultResponse();

            try
            {
                using (var db = new MarComContext())
                {
                    if (entity.Id == 0)
                    {
                        bool nameExists = db.M_Unit.Any(nm => nm.Name.Equals(entity.Name));
                        if (nameExists)
                        {
                            result.Success = false;
                            result.Message = "Unit with name " + entity.Name + " already Exists!";
                        }
                        else
                        {
                            M_Unit unit = new M_Unit();
                            unit.Code        = entity.Code;
                            unit.Name        = entity.Name;
                            unit.Description = entity.Description;
                            unit.Is_Delete   = entity.Is_Delete;
                            unit.Create_By   = entity.Create_By;

                            unit.Create_Date = DateTime.Now;

                            db.M_Unit.Add(unit);
                            db.SaveChanges();

                            result.Message = "Data Saved with code " + entity.Code;
                        }
                    }
                    else
                    {
                        M_Unit unit = db.M_Unit.Where(u => u.Id == entity.Id).FirstOrDefault();
                        if (unit != null)
                        {
                            bool nameExists = db.M_Unit.Any(nm => nm.Name.Equals(entity.Name) && nm.Code != entity.Code);
                            if (nameExists)
                            {
                                result.Message = "Unit with name " + entity.Name + " already exists";
                            }
                            else
                            {
                                unit.Code        = entity.Code;
                                unit.Name        = entity.Name;
                                unit.Description = entity.Description;

                                unit.Update_By   = entity.Update_By;
                                unit.Update_Date = DateTime.Now;
                                db.SaveChanges();

                                result.Message = "Data Update with code " + entity.Code;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                result.Success = false;
                result.Message = ex.Message;
            }
            return(result);
        }
        private static M_Unit GeneratePartsForCurrentLevel(ProductStructureInput inputParameters, M_Unit[] unitCol,
                                                           XRandom rng, int i, bool sampleWorkPlanLength, TruncatedDiscreteNormal truncatedDiscreteNormalDistribution,
                                                           HashSet <long> availableNodesOnThisLevel, long j, M_Unit unit, M_ArticleType articleType, bool toPurchase,
                                                           bool toBuild, Dictionary <long, Node> nodesCurrentLevel)
        {
            availableNodesOnThisLevel.Add(j);

            if (i == inputParameters.DepthOfAssembly)
            {
                var pos = rng.Next(unitCol.Length);
                unit = unitCol[pos];
            }

            var node = new Node
            {
                AssemblyLevel = i,
                Article       = new M_Article
                {
                    Name           = "Material " + i + "." + (j + 1),
                    ArticleTypeId  = articleType.Id,
                    CreationDate   = DateTime.Now,
                    DeliveryPeriod = 5,
                    UnitId         = unit.Id,
                    Price          = 10,
                    ToPurchase     = toPurchase,
                    ToBuild        = toBuild
                }
            };

            nodesCurrentLevel[j] = node;
            if (sampleWorkPlanLength && i != inputParameters.DepthOfAssembly)
            {
                node.WorkPlanLength = truncatedDiscreteNormalDistribution.Sample();
            }

            return(unit);
        }
Exemple #15
0
 public ActionResult AddUnit(M_Unit model)
 {
     new DataLayer().AddUnit <M_Unit>(model);
     return(View());
 }