public static List <InvoiceCatalogModel> FindInvoices(DSModel db, InvoiceCatalogFilter filter)
        {
            if (db == null)
            {
                throw new ArgumentNullException("db");
            }
            if (filter == null)
            {
                throw new ArgumentNullException("filter");
            }

            string sql = SqlCache.Get(db, "invoice catalog load");

            List <MySqlParameter> par = new List <MySqlParameter>();

            if (!string.IsNullOrWhiteSpace(filter.InvoiceNumber))
            {
                sql = sql.Replace("#InvoiceNumber", string.Empty);
                par.Add(new MySqlParameter("InvoiceNumber", filter.InvoiceNumber + "%"));
            }
            if (filter.IssuedFrom.HasValue && filter.IssuedFrom.Value != DateTime.MinValue)
            {
                sql = sql.Replace("#IssuedFrom", string.Empty);
                par.Add(new MySqlParameter("IssuedFrom", filter.IssuedFrom.Value.Date));
            }
            if (filter.IssuedTo.HasValue && filter.IssuedTo.Value != DateTime.MinValue)
            {
                sql = sql.Replace("#IssuedTo", string.Empty);
                par.Add(new MySqlParameter("IssuedTo", filter.IssuedTo.Value.Date));
            }
            if (filter.PeriodFrom.HasValue && filter.PeriodFrom.Value != DateTime.MinValue)
            {
                sql = sql.Replace("#PeriodFrom", string.Empty);
                par.Add(new MySqlParameter("PeriodFrom", filter.PeriodFrom.Value.Date));
            }
            if (filter.PeriodTo.HasValue && filter.PeriodTo.Value != DateTime.MinValue)
            {
                sql = sql.Replace("#PeriodTo", string.Empty);
                par.Add(new MySqlParameter("PeriodTo", filter.PeriodTo.Value.Date));
            }


            if (!string.IsNullOrWhiteSpace(filter.CompanyID))
            {
                sql = sql.Replace("#CompanyID", string.Empty);
                sql = sql.Replace("@CompanyID", filter.CompanyID);
            }
            if (!string.IsNullOrWhiteSpace(filter.LocationID))
            {
                sql = sql.Replace("#LocationID", string.Empty);
                sql = sql.Replace("@LocationID", filter.LocationID);
            }

            return(db.ExecuteQuery <InvoiceCatalogModel>(sql, par.ToArray()).ToList());
        }
        public static void CalculateInvoice(DSModel db, InvoiceModel invoice)
        {
            var details = db.ExecuteQuery <InvoiceDetailModel>("CALL InvoiceCalculate(@CompanyID, @LocationID, @PeriodFrom, @PeriodTo);",
                                                               new MySqlParameter("CompanyID", invoice.CompanyID),
                                                               new MySqlParameter("LocationID", invoice.LocationID),
                                                               new MySqlParameter("PeriodFrom", invoice.InvoicePeriodFrom),
                                                               new MySqlParameter("PeriodTo", invoice.InvoicePeriodTo));

            invoice.Details.Clear();
            invoice.Details.AddRange(details);
        }
예제 #3
0
        private static void SaveReminders(DSModel db, KeyBinder key, DriverMedicalModel model, DriversMedical poco)
        {
            string sqlDelete = @"DELETE FROM drivers_medicals_reminders WHERE DriverMedicalID = @DriverMedicalID AND DriverMedicalReminderID NOT IN (@DriverMedicalReminderID);";
            string ids       = "0";

            if (model.Reminders.Count > 0)
            {
                ids = string.Join <uint>(",", model.Reminders.Select(r => r.DriverMedicalReminderID));
            }

            sqlDelete = sqlDelete.Replace("@DriverMedicalReminderID", ids);

            db.ExecuteNonQuery(sqlDelete, new MySqlParameter("DriverMedicalID", poco.DriverMedicalID));
            string sqlInsert = @"
                INSERT INTO drivers_medicals_reminders
                  (DriverMedicalID, ReminderID, ReminderType, ShouldRemind) VALUES (@DriverMedicalID, @ReminderID, @ReminderType, @ShouldRemind);
                SELECT LAST_INSERT_ID();";
            string sqlUpdate = @"
                UPDATE drivers_medicals_reminders
                SET
                  DriverMedicalID = @DriverMedicalID, 
                  ReminderID = @ReminderID, 
                  ReminderType = @ReminderType, 
                  ShouldRemind = @ShouldRemind
                WHERE
                  DriverMedicalReminderID = @DriverMedicalReminderID;";

            foreach (var rem in model.Reminders)
            {
                if (rem.DriverMedicalReminderID == 0)
                {
                    rem.DriverMedicalID = poco.DriverMedicalID;
                    UtilityModel <uint> temp = new UtilityModel <uint>();
                    temp.Value = db.ExecuteQuery <uint>(sqlInsert,
                                                        new MySqlParameter("DriverMedicalID", rem.DriverMedicalID),
                                                        new MySqlParameter("ReminderID", rem.ReminderID),
                                                        new MySqlParameter("ReminderType", rem.ReminderType),
                                                        new MySqlParameter("ShouldRemind", rem.ShouldRemind))
                                 .First();
                    key.AddKey(temp, rem, "Value", rem.GetName(p => p.DriverMedicalReminderID));
                }
                else
                {
                    rem.DriverMedicalID = poco.DriverMedicalID;
                    db.ExecuteNonQuery(sqlUpdate,
                                       new MySqlParameter("DriverMedicalReminderID", rem.DriverMedicalReminderID),
                                       new MySqlParameter("DriverMedicalID", rem.DriverMedicalID),
                                       new MySqlParameter("ReminderID", rem.ReminderID),
                                       new MySqlParameter("ReminderType", rem.ReminderType),
                                       new MySqlParameter("ShouldRemind", rem.ShouldRemind));
                }
            }
        }
        /// <summary>
        /// Gets all license notifications to be sent
        /// </summary>
        /// <param name="db"></param>
        /// <param name="checkDate"></param>
        /// <returns></returns>
        public static List <NotificationModel> GetLicenseNotifications(DSModel db, DateTime checkDate = default(DateTime))
        {
            if (db == null)
            {
                throw new ArgumentNullException("db");
            }

            if (checkDate == DateTime.MinValue)
            {
                checkDate = DateTime.Now.Date;
            }

            return(db.ExecuteQuery <NotificationModel>("CALL GetLicenseNotifications(@CheckDate);", new MySqlParameter("CheckDate", checkDate.Date)).ToList());
        }
예제 #5
0
        public static List <DispatchModel> GetDispatches(DSModel db, params uint[] dispatchIDs)
        {
            if (db == null)
            {
                throw new ArgumentNullException("db");
            }
            if (dispatchIDs.Length == 0)
            {
                return(new List <DispatchModel>());
            }

            string sql = @"
                SELECT
                  d.DispatchID,
                  d.DriverID,
                  d.CompanyID,
                  d.LocationID,
                  d.FromDateTime,
                  d.ToDateTime,

                  IF(d.HasLunch, c.LunchTime, 0) AS LunchTime,
                  IF(d.HasTraining, c.TrainingTime, 0) AS TrainingTime,

                  d.SpecialPayRate,
                  d.MiscCharge,
                  d.Note,
                  d.IsCancelled,
                  d.IsConfirmed,
                  d.HasLunch,
                  d.HasTraining,
                  d.UserID,
                  d.LastUpdateTime,
                  CONCAT(u.FirstName, ' ', u.LastName, ' (', u.Username, ')') AS UserName
                FROM dispatches d
                  INNER JOIN users u
                    ON d.UserID = u.UserID
                  INNER JOIN companies c
                    ON d.CompanyID = c.CompanyID
                WHERE d.DispatchID IN (@DispatchID)
                GROUP BY d.DispatchID;";

            sql = sql.Replace("@DispatchID", string.Join <uint>(",", dispatchIDs));
            var items = db.ExecuteQuery <DispatchModel>(sql).ToList();

            items.ForEach(i => i.IsChanged = false);

            return(items);
        }
        public static List <LocationModel> GetLocations(DSModel db, params uint[] locationIDs)
        {
            if (db == null)
            {
                throw new ArgumentNullException("db");
            }
            if (locationIDs.Length == 0)
            {
                return(new List <LocationModel>());
            }

            string sql = @"
                SELECT
                  l.*,
                  ToBool(0) AS IsChanged
                FROM locations l
                WHERE l.LocationID IN (@LocationID);";

            sql = sql.Replace("@LocationID", string.Join <uint>(",", locationIDs));
            var items = db.ExecuteQuery <LocationModel>(sql).ToList();

            foreach (var i in items)
            {
                if (i.ConfirmationContactID.HasValue)
                {
                    i.ConfirmationContact = ContactRepository.GetContacts(db, i.ConfirmationContactID.Value).FirstOrDefault();
                }
                if (i.InvoiceContactID.HasValue)
                {
                    i.InvoiceContact = ContactRepository.GetContacts(db, i.InvoiceContactID.Value).FirstOrDefault();
                }
                if (i.DispatchContactID.HasValue)
                {
                    i.DispatchContact = ContactRepository.GetContacts(db, i.DispatchContactID.Value).FirstOrDefault();
                }

                i.IsChanged = false;
            }

            return(items);
        }
예제 #7
0
        public static List <ContactModel> GetContacts(DSModel db, params uint[] contactIDs)
        {
            if (db == null)
            {
                throw new ArgumentNullException("db");
            }
            if (contactIDs.Length == 0)
            {
                return(new List <ContactModel>());
            }

            string sql = @"
                SELECT
                  c.*,
                  ToBool(0) AS IsChanged
                FROM contacts c
                WHERE c.ContactID IN (@ContactID);";

            sql = sql.Replace("@ContactID", string.Join <uint>(",", contactIDs));
            return(db.ExecuteQuery <ContactModel>(sql).ToList());
        }
예제 #8
0
        public static List <DriverMedicalCatalogModel> FindMedicals(DSModel db, DriverMedicalFilterModel filter)
        {
            if (db == null)
            {
                throw new ArgumentNullException("db");
            }
            if (filter == null)
            {
                throw new ArgumentNullException("filter");
            }

            string sql = SqlCache.Get(db, "medicals catalog refresh");
            List <MySqlParameter> par = new List <MySqlParameter>();

            if (!string.IsNullOrWhiteSpace(filter.DriverID))
            {
                sql = sql.Replace("#DriverID", string.Empty);
                sql = sql.Replace("@DriverID", filter.DriverID);
            }
            if (!string.IsNullOrWhiteSpace(filter.MedTypeID))
            {
                sql = sql.Replace("#MedTypeID", string.Empty);
                sql = sql.Replace("@MedTypeID", filter.MedTypeID);
            }
            if (filter.ValidityDateFrom.HasValue)
            {
                sql = sql.Replace("#ValidityDateFrom", string.Empty);
                par.Add(new MySqlParameter("ValidityDateFrom", filter.ValidityDateFrom.Value.Date));
            }
            if (filter.ValidityDateTo.HasValue)
            {
                sql = sql.Replace("#ValidityDateTo", string.Empty);
                par.Add(new MySqlParameter("ValidityDateTo", filter.ValidityDateTo.Value.Date));
            }

            return(db.ExecuteQuery <DriverMedicalCatalogModel>(
                       sql,
                       par.ToArray())
                   .ToList());
        }
        public static List <FileBlobViewModel> GetViewBlobsByDriver(DSModel db, uint driverID)
        {
            if (db == null)
            {
                throw new ArgumentNullException("db");
            }

            string sql = @"
                SELECT f.BlobID
                     , f.BlobName
                     , f.BlobDescription
                     , f.BlobExtension
                     , concat(round((length(f.BlobData) / 1024) / 1024, 2), ' MB') AS BlobSize
                FROM
                  file_blobs f
                WHERE
                  f.DriverID = @DriverID
                ORDER BY
                  f.LastUpdateTime DESC;";

            return(db.ExecuteQuery <FileBlobViewModel>(sql, new MySqlParameter("DriverID", driverID)).ToList());
        }
예제 #10
0
        public static List <DispatchCatalogModel> GetDispatches(DSModel db, uint[] drivers = null, uint[] companies = null, uint[] locations = null, DateTime?fromDate = null, DateTime?toDate = null, bool?includeCancelled = null)
        {
            if (db == null)
            {
                throw new ArgumentNullException("db");
            }

            string sql = @"
                SELECT
                  d.DispatchID,
                  d.DriverID,
                  d.CompanyID,
                  d.LocationID,
                  d.FromDateTime,
                  d.ToDateTime,

                  IF(d.HasTraining, c.TrainingTime, 0) AS TrainingTime,
                  IF(d.HasLunch, c.LunchTime, 0) AS LunchTime,

                  d.SpecialPayRate,
                  d.MiscCharge,
                  d.Note,
                  d.IsCancelled,
                  d.IsConfirmed,
                  d.HasLunch,
                  d.HasTraining,
                  d.UserID,
                  d.LastUpdateTime,

                  CONCAT(c.CompanyName, ' - ', c.CompanyCode) AS CompanyName,
                  CONCAT(dr.LastName, ', ', dr.FirstName) AS DriverName,
                  CONCAT(l.LocationName, ' - ', l.LocationCode) AS LocationName,

                  CONCAT(u.FirstName, ' ', u.LastName, ' (', u.UserName, ')') AS UserName

                FROM dispatches d
                  INNER JOIN companies c
                    ON d.CompanyID = c.CompanyID
                  INNER JOIN drivers dr
                    ON d.DriverID = dr.DriverID
                  INNER JOIN locations l
                    ON d.LocationID = l.LocationID
                  INNER JOIN users u
                    ON d.UserID = u.UserID
                WHERE 1 = 1
                #DriverID AND d.DriverID IN (@DriverID)
                #CompanyID AND d.CompanyID IN (@CompanyID)
                #LocationID AND d.LocationID IN (@LocationID)
                #FromDate AND d.FromDateTime >= DATE(@FromDate)
                #ToDate AND d.ToDateTime <= DATE_ADD(DATE(@ToDate),INTERVAL 86399 SECOND)
                #IsCancelled AND d.IsCancelled = @IsCancelled";
            List <MySqlParameter> pars = new List <MySqlParameter>();

            if (drivers != null && drivers.Length > 0)
            {
                sql = sql.Replace("#DriverID", string.Empty);
                sql = sql.Replace("@DriverID", string.Join <uint>(",", drivers));
            }
            if (companies != null && companies.Length > 0)
            {
                sql = sql.Replace("#CompanyID", string.Empty);
                sql = sql.Replace("@CompanyID", string.Join <uint>(",", companies));
            }
            if (locations != null && locations.Length > 0)
            {
                sql = sql.Replace("#LocationID", string.Empty);
                sql = sql.Replace("@LocationID", string.Join <uint>(",", locations));
            }
            if (fromDate.HasValue && fromDate.GetValueOrDefault() != DateTime.MinValue)
            {
                sql = sql.Replace("#FromDate", string.Empty);
                pars.Add(new MySqlParameter("FromDate", fromDate.Value.Date));
            }
            if (toDate.HasValue && toDate.GetValueOrDefault() != DateTime.MinValue)
            {
                sql = sql.Replace("#ToDate", string.Empty);
                pars.Add(new MySqlParameter("ToDate", toDate.Value.Date));
            }


            if (includeCancelled.HasValue && includeCancelled.Value == false)
            {
                sql = sql.Replace("#IsCancelled", string.Empty);
                pars.Add(new MySqlParameter("IsCancelled", false));
            }

            var items = db.ExecuteQuery <DispatchCatalogModel>(sql, pars.ToArray()).ToList();

            items.ForEach(i => i.IsChanged = false);
            return(items);
        }
예제 #11
0
        public static List <DriverModel> FindDrivers(DSModel db, DriverFilterModel filter)
        {
            if (db == null)
            {
                throw new ArgumentNullException("db");
            }
            if (filter == null)
            {
                throw new ArgumentNullException("filter");
            }

            List <MySqlParameter> parameters = new List <MySqlParameter>();
            string sql = SqlCache.Get(db, "drivers catalog load");

            if (!string.IsNullOrWhiteSpace(filter.DriverCode))
            {
                sql = sql.Replace("#DriverCode", string.Empty);
                parameters.Add(new MySqlParameter("DriverCode", filter.DriverCode + "%"));
            }
            if (!string.IsNullOrWhiteSpace(filter.FirstName))
            {
                sql = sql.Replace("#FirstName", string.Empty);
                parameters.Add(new MySqlParameter("FirstName", filter.FirstName + "%"));
            }
            if (!string.IsNullOrWhiteSpace(filter.SecondName))
            {
                sql = sql.Replace("#SecondName", string.Empty);
                parameters.Add(new MySqlParameter("SecondName", filter.SecondName + "%"));
            }
            if (!string.IsNullOrWhiteSpace(filter.LastName))
            {
                sql = sql.Replace("#LastName", string.Empty);
                parameters.Add(new MySqlParameter("LastName", filter.LastName + "%"));
            }
            if (!string.IsNullOrWhiteSpace(filter.CellPhone))
            {
                sql = sql.Replace("#CellPhone", string.Empty);
                parameters.Add(new MySqlParameter("CellPhone", filter.CellPhone + "%"));
            }
            if (!string.IsNullOrWhiteSpace(filter.Email))
            {
                sql = sql.Replace("#Email", string.Empty);
                parameters.Add(new MySqlParameter("Email", filter.Email + "%"));
            }
            if (!string.IsNullOrWhiteSpace(filter.LicenseID))
            {
                sql = sql.Replace("#LicenseID", string.Empty);
                sql = sql.Replace("@LicenseID", filter.LicenseID);
            }
            if (!string.IsNullOrWhiteSpace(filter.PermitID))
            {
                sql = sql.Replace("#PermitID", string.Empty);
                sql = sql.Replace("@PermitID", filter.PermitID);
            }

            string isEnabled = (filter.IncludeDisabled ? "0,1" : "1");

            sql = sql.Replace("@IsEnabled", isEnabled);

            parameters.Add(new MySqlParameter("TodayDate", DateTime.Now.Date));

            return(db.ExecuteQuery <DriverModel>(sql, parameters.ToArray())
                   .ToList());
        }