예제 #1
0
        private Task <List <PenjualanOfMonth> > GetPenjualanOfMonth(int tahun)
        {
            var list = new List <ModelsShared.Models.PenjualanOfMonth>();

            using (var db = new OcphDbContext())
            {
                var sp  = string.Format("PenjualanOfamount");
                var cmd = db.CreateCommand();
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.CommandText = sp;
                for (int i = 1; i <= 12; i++)
                {
                    var date = new DateTime(tahun, i, 1);
                    cmd.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("Tanggal", date));
                    var dr     = cmd.ExecuteReader();
                    var ent    = new EntityInfo(typeof(ModelsShared.Models.PenjualanOfMonth));
                    var result = new MappingColumn(ent).MappingWithoutInclud <PenjualanOfMonth>(dr);
                    if (result.Count > 0)
                    {
                        var item = result.FirstOrDefault();
                        list.Add(item);
                    }


                    cmd.Parameters.RemoveAt("Tanggal");
                    dr.Close();
                }
            }

            return(Task.FromResult(list));
        }
예제 #2
0
        public Task <List <PackingListPrintModel> > GetPackingList(int ManifestId)
        {
            using (var db = new OcphDbContext())
            {
                try
                {
                    var sp  = string.Format("PackingList");
                    var cmd = db.CreateCommand();
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.CommandText = sp;
                    cmd.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("ManifestId", ManifestId));
                    var dr = cmd.ExecuteReader();

                    var ent  = new EntityInfo(typeof(ModelsShared.Models.PackingListPrintModel));
                    var list = new MappingColumn(ent).MappingWithoutInclud <PackingListPrintModel>(dr);
                    dr.Close();

                    return(Task.FromResult(list));
                }
                catch (Exception ex)
                {
                    throw new SystemException(ex.Message);
                }
            }
        }
예제 #3
0
        public async Task <List <PenjualanOfYear> > GetPenjualanThreeYear()
        {
            var list = new List <ModelsShared.Models.PenjualanOfYear>();

            using (var db = new OcphDbContext())
            {
                var thisyear = DateTime.Now.Year;
                var sp       = string.Format("PenjualanOfaYear");
                var cmd      = db.CreateCommand();
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.CommandText = sp;
                for (int i = thisyear; i > thisyear - 3; i--)
                {
                    cmd.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("tahun", i));
                    var dr = cmd.ExecuteReader();

                    var ent = new EntityInfo(typeof(ModelsShared.Models.PenjualanOfYear));
                    list = new MappingColumn(ent).MappingWithoutInclud <PenjualanOfYear>(dr);
                    if (list.Count > 0)
                    {
                        var item = list.FirstOrDefault();
                        item.Months = await GetPenjualanOfMonth(item.Tahun);

                        list.Add(item);
                    }


                    cmd.Parameters.RemoveAt("tahun");
                    dr.Close();
                }
            }

            return(list);
        }
예제 #4
0
        private static string GetImportValueOf(MappingColumn column, ProcessedImportRow processedImportRow, GeneratorDelegates generatorDelegates)
        {
            string value = processedImportRow.Row[column.TemplateColumnOrdinal] == DBNull.Value ? "" : processedImportRow.Row[column.TemplateColumnOrdinal].ToString().Trim();

            switch (column.LookupType)
            {
            case LookupType.None:
                return(value
                       .ValidateAgainstDbSetting(column, processedImportRow)
                       .WithSqlSyntax(column.Datatype));

            case LookupType.Table:
            case LookupType.Unit:
                return(column.LookupValues
                       .ReplacementFor(column, value.ToUpperInvariant(), processedImportRow)
                       .ValidateAgainstDbSetting(column, processedImportRow)
                       .WithSqlSyntax(column.Datatype));

            case LookupType.Tag:
                return(generatorDelegates.ReplacementForTag(column, processedImportRow)
                       .ValidateAgainstDbSetting(column, processedImportRow)
                       .WithSqlSyntax(column.Datatype));

            default:
                throw new ArgumentException("Unknown lookup type");
            }
        }
예제 #5
0
        public Task <titipankapal> GetTitipanKapal(int ManifestId)
        {
            using (var db = new OcphDbContext())
            {
                try
                {
                    var sp  = string.Format("TitipanKapal");
                    var cmd = db.CreateCommand();
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.CommandText = sp;
                    cmd.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("ManifestId", ManifestId));
                    var dr = cmd.ExecuteReader();

                    var ent  = new EntityInfo(typeof(ModelsShared.Models.titipankapal));
                    var list = new MappingColumn(ent).MappingWithoutInclud <titipankapal>(dr);
                    dr.Close();
                    titipankapal titip = null;
                    if (list.Count > 0)
                    {
                        titip        = list.FirstOrDefault();
                        titip.Jumlah = list.Count;
                    }
                    return(Task.FromResult(titip));
                }
                catch (Exception ex)
                {
                    throw new SystemException(ex.Message);
                }
            }
        }
예제 #6
0
        public IQueryable <T> Select(Expression <Func <T, bool> > expression)
        {
            List <T>      list = new List <T>();
            StringBuilder sb   = new StringBuilder();

            sb.Append("(Select * From ").Append(Entity.TableName).Append(" Where ");

            sb.Append(new WhereTranslator().Translate(expression));

            sb.Append(")");
            IDbCommand cmd = connection.CreateCommand();

            cmd.CommandType = CommandType.Text;
            cmd.CommandText = sb.ToString();
            IDataReader dr = null;

            try
            {
                dr = cmd.ExecuteReader() as MySqlDataReader;
                var map = new MappingColumn(Entity);
                list = map.MappingWithoutInclud <T>(dr);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                dr.Close();
            }
            return(list.AsQueryable());
        }
예제 #7
0
        public IQueryable <T> SelectAll()
        {
            List <T>      list = new List <T>();
            StringBuilder sb   = new StringBuilder();

            sb.Append("Select * From ").Append(Entity.TableName);
            IDataReader dr = null;

            try
            {
                IDbCommand cmd = connection.CreateCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sb.ToString();
                dr   = cmd.ExecuteReader();
                list = new MappingColumn(Entity).MappingWithoutInclud <T>(dr);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                dr.Close();
            }
            return(list.AsQueryable <T>());
        }
예제 #8
0
        public IQueryable <T> ExecuteStoreProcedureQuery(string storeProcedure)
        {
            List <T>    list = new List <T>();
            IDataReader dr   = null;

            try
            {
                IDbCommand cmd = connection.CreateCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "CallEmployee";
                dr   = cmd.ExecuteReader();
                list = new MappingColumn(Entity).MappingWithoutInclud <T>(dr);
            }
            catch (Exception ex)
            {
                throw new SystemException(ex.Message);
            }
            finally
            {
                if (dr != null)
                {
                    dr.Close();
                }
            }
            return(list.AsQueryable <T>());
        }
예제 #9
0
        public object GetLastItem()
        {
            List <T>   list = new List <T>();
            IDbCommand cmd  = connection.CreateCommand();

            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "Select * From " + Entity.TableName + " Order By " + Entity.GetAttributPrimaryKeyName() + " Desc Limit 1";
            IDataReader dr = null;

            try
            {
                dr   = cmd.ExecuteReader() as MySqlDataReader;
                list = new MappingColumn(Entity).MappingWithoutInclud <T>(dr);
            }
            catch (Exception ex)
            {
                throw new SystemException(ex.Message);
            }
            finally
            {
                if (dr != null)
                {
                    dr.Close();
                }
            }
            return(list.FirstOrDefault());
        }
예제 #10
0
        public IQueryable <T> Select(Expression <Func <T, dynamic> > expression)
        {
            EntityInfo    entity = new EntityInfo(typeof(T));
            List <T>      list   = new List <T>();
            StringBuilder sb     = new StringBuilder();
            var           job    = new CollectPropertyFromExpression().Translate(expression);

            sb.Append("Select ");
            if (job.Count < 1)
            {
                sb.Append(" * ");
            }
            else
            {
                int count = job.Count;
                for (int i = 0; i < count; i++)
                {
                    var att = entity.GetAttributDbColumn(job[i]);

                    sb.Append(string.Format("{0}", att));
                    if (i < count)
                    {
                        sb.Append(", ");
                    }
                }
            }
            string temp = sb.ToString();

            sb.Clear();

            temp = temp.Substring(0, temp.Length - 2);
            sb.Append(temp + " ");
            sb.Append(" From ").Append(Entity.TableName);

            //    sb.Append(new WhereTranslator().Translate(expression));
            IDbCommand cmd = connection.CreateCommand();

            cmd.CommandType = CommandType.Text;
            cmd.CommandText = sb.ToString();
            IDataReader dr = null;

            try
            {
                dr = cmd.ExecuteReader() as MySqlDataReader;
                var map = new MappingColumn(Entity);
                list = map.MappingWithoutInclud <T>(dr);
            }
            catch (MySqlException ex)
            {
                throw new  SystemException(ex.Message);
            }
            finally
            {
                if (dr != null)
                {
                    dr.Close();
                }
            }
            return(list.AsQueryable());
        }
예제 #11
0
        public IQueryable <T> Includ(IQueryable <T> query, Expression <Func <T, dynamic> > expression)
        {
            var job = new CollectPropertyFromExpression().Translate(expression);

            foreach (T Item in query)
            {
                foreach (PropertyInfo propertyJOb in job)
                {
                    EntityInfo entityChild = null;
                    if (propertyJOb.PropertyType.GenericTypeArguments.Count() > 0)
                    {
                        entityChild = new EntityInfo(propertyJOb.PropertyType.GenericTypeArguments[0]);
                        string vsql = new InsertQuery(Entity).GetChildInsertQuery(propertyJOb, Item, entityChild);
                        if (vsql != string.Empty)
                        {
                            IDataReader dr = null;
                            try
                            {
                                IDbCommand cmd = connection.CreateCommand();
                                cmd.CommandType = CommandType.Text;
                                cmd.CommandText = vsql;
                                dr = cmd.ExecuteReader();

                                var   propertyproduct = Entity.GetPropertyByPropertyName(propertyJOb.Name);
                                IList list            = (IList)Activator.CreateInstance(typeof(List <>).MakeGenericType(entityChild.GetEntityType()));
                                var   map             = new MappingColumn(Entity);
                                var   resultMapping   = (IList)map.MappingWithoutInclud(dr, entityChild.GetEntityType());

                                foreach (var item in resultMapping)
                                {
                                    list.Add(item);
                                }

                                propertyproduct.SetValue(Item, list, null);
                            }
                            catch (Exception ex)
                            {
                                throw new System.Exception(ex.Message);
                            }
                            finally
                            {
                                if (dr != null)
                                {
                                    dr.Close();
                                }
                            }
                        }
                    }
                    else
                    {
                        entityChild = new EntityInfo(propertyJOb.ReflectedType);
                    }
                }
            }
            return(query);
        }
        public static int?ColumnOrdinalOf(this MappingTable mappingTable, string columnName)
        {
            MappingColumn column = mappingTable.MappingColumns.Where(c => c.StarchefColumnName.ToUpperInvariant() == columnName.ToUpperInvariant()).FirstOrDefault();

            if (column != null)
            {
                return(column.TemplateColumnOrdinal);
            }
            return(null);
        }
        public static int?ColumnOrdinalOf(this IList <MappingTable> mappingTables, string tableName, string columnName)
        {
            MappingColumn column = mappingTables.Where(t => t.TableName.ToUpperInvariant() == (tableName != null ? tableName.ToUpperInvariant() : string.Empty))
                                   .Select(mappingTable => mappingTable.MappingColumns.Where(i => i.StarchefColumnName.ToUpperInvariant() == columnName.ToUpperInvariant()).FirstOrDefault()).FirstOrDefault();

            if (column != null)
            {
                return(column.TemplateColumnOrdinal);
            }
            return(null);
        }
예제 #14
0
        public static string TagDelegateTwoLevel(MappingColumn column, ProcessedImportRow processedImportRow)
        {
            string mainCategory = processedImportRow.Row[column.TemplateColumnOrdinal - 1] == DBNull.Value ? "" : processedImportRow.Row[column.TemplateColumnOrdinal - 1].ToString().Trim();
            string subCategory  = processedImportRow.Row[column.TemplateColumnOrdinal] == DBNull.Value ? "" : processedImportRow.Row[column.TemplateColumnOrdinal].ToString().Trim();

            //main category and all sub category is empty, we can continue with the import without categories
            if (string.IsNullOrWhiteSpace(mainCategory) && string.IsNullOrWhiteSpace(subCategory))
            {
                column.IgnoreThisTable = true;
                return("");
            }

            //only main Category is available
            if (!string.IsNullOrWhiteSpace(mainCategory) && string.IsNullOrWhiteSpace(subCategory))
            {
                LookupValue categoryLookup = column.LookupValues.Where(tag => tag.Lookup == mainCategory.ToUpperInvariant()).FirstOrDefault();

                if (categoryLookup != null)
                {
                    return(categoryLookup.ReplacementId.ToString());
                }
                processedImportRow.AddException(new ImportDataException {
                    ExceptionType = ExceptionType.CategoryIsNotValid, TemplateMappingColumn = column.TemplateMappingColumn, TemplateColumnName = column.TemplateColumnName, IsValid = false
                });
                return("");
            }

            //We have  main category and subcategory level 2
            if (!string.IsNullOrWhiteSpace(mainCategory) && !string.IsNullOrWhiteSpace(subCategory))
            {
                string category = string.Format("{0}||{1}", mainCategory, subCategory).ToUpperInvariant();

                LookupValue categoryLookup = column.LookupValues.Where(tag => tag.Lookup == category).FirstOrDefault();

                if (categoryLookup != null)
                {
                    return(categoryLookup.ReplacementId.ToString());
                }
                processedImportRow.AddException(new ImportDataException {
                    ExceptionType = ExceptionType.CategoryIsNotValid, TemplateMappingColumn = column.TemplateMappingColumn, TemplateColumnName = column.TemplateColumnName, IsValid = false
                });
                return("");
            }

            //All other conditions are invalid hierarchy
            processedImportRow.AddException(new ImportDataException {
                ExceptionType = ExceptionType.CategoryIsNotValid, TemplateMappingColumn = column.TemplateMappingColumn, TemplateColumnName = column.TemplateColumnName, IsValid = false
            });
            return("");
        }
예제 #15
0
        public Task <List <invoice> > GetInvoiceNotYetPaid()
        {
            using (var db = new OcphDbContext())
            {
                var sp  = string.Format("InvoiceNotYetPaid");
                var cmd = db.CreateCommand();
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.CommandText = sp;
                var dr = cmd.ExecuteReader();

                var ent  = new EntityInfo(typeof(ModelsShared.Models.invoice));
                var list = new MappingColumn(ent).MappingWithoutInclud <invoice>(dr);
                dr.Close();

                return(Task.FromResult(list));
            }
        }
예제 #16
0
        public Task <List <invoice> > GetInvoiceJatuhTempo()
        {
            using (var db = new OcphDbContext())
            {
                var sp  = string.Format("InvoiceJatuhTempo");
                var cmd = db.CreateCommand();
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.CommandText = sp;
                cmd.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("Tanggal", DateTime.Now));
                var dr = cmd.ExecuteReader();

                var ent  = new EntityInfo(typeof(ModelsShared.Models.invoice));
                var list = new MappingColumn(ent).MappingWithoutInclud <invoice>(dr);
                dr.Close();

                return(Task.FromResult(list));
            }
        }
 public static string ReplacementFor(this HashSet<LookupValue> lookupValues, MappingColumn column, string importValue,ProcessedImportRow processedImportRow)
 {
     if (string.IsNullOrWhiteSpace(importValue)) 
         return "";
     
     foreach (LookupValue lookupValue in lookupValues)
     {
         if (lookupValue.Lookup == importValue)
             return lookupValue.ReplacementId.ToString();
     }
     processedImportRow.AddException(new ImportDataException
                                         {
                                             ExceptionType = ExceptionType.LookupMissing, 
                                             TemplateColumnName = column.TemplateColumnName,
                                             IsValid = false,
                                             TemplateMappingColumn = column.TemplateMappingColumn
                                         });
     return "";
 }
예제 #18
0
        public TracingModel GetPenjualan(int STT)
        {
            using (var db = new OcphDbContext())
            {
                try
                {
                    var cmd = db.CreateCommand();
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.CommandText = "GetPenjualan";
                    cmd.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("STT", STT));
                    var reader = cmd.ExecuteReader();
                    var mapp   = new MappingColumn(new EntityInfo(typeof(TracingModel)));
                    var result = mapp.MappingWithoutInclud <TracingModel>(reader);

                    reader.Close();

                    var tracing = result.FirstOrDefault();
                    if (result != null)
                    {
                        var packlists = db.PackingLists.Where(O => O.PenjualanId == tracing.Id).GroupBy(O => O.ManifestID).ToList();
                        tracing.Manifests = new List <manifestoutgoing>();
                        foreach (var item in packlists)
                        {
                            var manifest = db.Outgoing.Where(O => O.Id == item.Key).FirstOrDefault();
                            if (manifest != null)
                            {
                                tracing.Manifests.Add(manifest);
                            }
                        }
                        return(tracing);
                    }
                    else
                    {
                        throw new SystemException(MessageCollection.Message(MessageType.NotFound));
                    }
                }
                catch (Exception ex)
                {
                    throw new SystemException(ex.Message);
                }
            }
        }
예제 #19
0
        public IQueryable <T> Select(Expression <Func <T, bool> > expression)
        {
            List <T>      list = new List <T>();
            StringBuilder sb   = new StringBuilder();

            sb.Append("Select * From ").Append(Entity.TableName).Append(" Where ");

            sb.Append(new WhereTranslator().Translate(expression));

            IDbCommand cmd = connection.CreateCommand();

            cmd.CommandType = CommandType.Text;
            cmd.CommandText = sb.ToString();
            IDataReader dr = null;

            try
            {
                dr = cmd.ExecuteReader();
                if (dr != null)
                {
                    var mapping = new MappingColumn(Entity);
                    mapping.ReaderSchema = this.ReadColumnInfo(dr.GetSchemaTable());
                    list = mapping.MappingWithoutInclud <T>(dr);
                }
                else
                {
                    throw new SystemException("Data Tidak Ditemukan");
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                dr.Close();
            }
            return(list.AsQueryable());
        }
예제 #20
0
        public IEnumerable <manifestoutgoing> ManifestsByPenjualanId(int penjualanId)
        {
            try
            {
                using (var db = new OcphDbContext())
                {
                    var sp  = string.Format("GetManifestsByPenjualan");
                    var cmd = db.CreateCommand();
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.CommandText = sp;
                    cmd.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("penjualanId", penjualanId));
                    var dr = cmd.ExecuteReader();

                    var ent  = new EntityInfo(typeof(ModelsShared.Models.manifestoutgoing));
                    var list = new MappingColumn(ent).MappingWithoutInclud <manifestoutgoing>(dr);
                    dr.Close();
                    return(list);
                }
            }
            catch (Exception ex)
            {
                throw new SystemException(ex.Message);
            }
        }
        public static string MappingNameOf(this MappingTable mappingTable, string columnName)
        {
            MappingColumn column = mappingTable.MappingColumns.Where(c => c.StarchefColumnName.ToUpperInvariant() == columnName.ToUpperInvariant()).FirstOrDefault();

            return(column != null ? column.TemplateMappingColumn : null);
        }
예제 #22
0
        public static string ValidateAgainstDbSetting(this string importValue, MappingColumn column, ProcessedImportRow processedImportRow)
        {
            if (column.ValidationRules != null)
            {
                foreach (var rule in column.ValidationRules)
                {
                    if (string.IsNullOrEmpty(importValue) && (rule.Mandatory || column.Mandatory))
                    {
                        processedImportRow.AddException
                            (new ImportDataException
                        {
                            ExceptionType         = column.StarchefColumnName == "tag_id" ? ExceptionType.CategoryRequired : ExceptionType.DbSettingIsMandatory,
                            TemplateColumnName    = column.TemplateColumnName,
                            IsValid               = false,
                            TemplateMappingColumn = column.TemplateMappingColumn
                        });
                    }

                    if (rule.StringLength < int.MaxValue && rule.StringLength > 0 && importValue.Length > rule.StringLength)
                    {
                        processedImportRow.AddException
                            (new ImportDataException
                        {
                            ExceptionType         = ExceptionType.DbSettingMaxLength,
                            TemplateColumnName    = column.TemplateColumnName,
                            IsValid               = false,
                            TemplateMappingColumn = column.TemplateMappingColumn,
                            MessageParam1         = rule.StringLength.ToString()
                        });
                    }

                    if (rule.MinimumValue != rule.MaximumValue && !string.IsNullOrEmpty(importValue))
                    {
                        //TODO:candidate for refactoring, perhaps the whole class
                        decimal value;
                        if (decimal.TryParse(importValue, out value))
                        {
                            if (value < rule.MinimumValue)
                            {
                                processedImportRow.AddException
                                    (new ImportDataException
                                {
                                    ExceptionType         = ExceptionType.DbSettingMinimumValue,
                                    TemplateColumnName    = column.TemplateColumnName,
                                    IsValid               = false,
                                    TemplateMappingColumn = column.TemplateMappingColumn,
                                    MessageParam1         = rule.MinimumValue.ToString(),
                                    MessageParam2         = rule.MaximumValue.ToString()
                                });
                            }
                            if (value > rule.MaximumValue)
                            {
                                processedImportRow.AddException(new ImportDataException
                                {
                                    ExceptionType         = ExceptionType.DbSettingMaximumValue,
                                    TemplateColumnName    = column.TemplateColumnName,
                                    IsValid               = false,
                                    TemplateMappingColumn = column.TemplateMappingColumn,
                                    MessageParam1         = rule.MinimumValue.ToString(),
                                    MessageParam2         = rule.MaximumValue.ToString()
                                });
                            }
                        }
                        else
                        {
                            processedImportRow.AddException
                                (new ImportDataException
                            {
                                ExceptionType         = ExceptionType.DbSettingMinimumValue,
                                TemplateColumnName    = column.TemplateColumnName,
                                IsValid               = false,
                                TemplateMappingColumn = column.TemplateMappingColumn,
                                MessageParam1         = rule.MinimumValue.ToString(),
                                MessageParam2         = rule.MaximumValue.ToString()
                            });
                        }
                    }

                    if (!string.IsNullOrEmpty(rule.RegEx))
                    {
                        Regex regex = new Regex(rule.RegEx);

                        if (!regex.Match(importValue).Success)
                        {
                            processedImportRow.AddException
                                (new ImportDataException
                            {
                                ExceptionType         = ExceptionType.DbSettingRegEx,
                                TemplateColumnName    = column.TemplateColumnName,
                                IsValid               = false,
                                TemplateMappingColumn = column.TemplateMappingColumn,
                                MessageParam1         = rule.RegEx,
                            });
                        }
                    }
                }
            }


            return(importValue);
        }