Ejemplo n.º 1
0
        /// <summary>
        /// Attempts to update Transit with "barCode" and its associated package so as to cancel transit
        /// sets transit's "DateCancelled" as today
        /// </summary>
        /// <param name="barCode"></param>
        /// <param name="dateCancelled"></param>
        /// <returns> Result object according to success or failure </returns>
        public Result CancelTransit(string barCode, DateTime dateCancelled)        // (P. 07-04-2015)
        {
            Result  cResult = new Result();
            Package package = _packageRepository.GetPackageWidthBarCode(barCode);

            if (package == null)                         // Case: not found
            {
                cResult.ErrorMessage = TransitResult.BarCodeNotFound;
                cResult.Success      = false;
                return(cResult);
            }
            List <PackageTransit> activeTransits = _packageRepository.GetActiveTransitsByPackage(package);

            if (activeTransits.Count() == 0)                         // Case: not found
            {
                cResult.ErrorMessage = TransitResult.TransitNotFound;
                cResult.Success      = false;
                return(cResult);
            }
            PackageTransit transit = activeTransits.ElementAt(0);

            transit.DateCancelled = DateTime.Today;                 // set transit as cancelled
            _packageRepository.UpdateTransit(transit);              // update transits DB
            package.CurrentStatus = PackageStatus.Lost;             // set packagestatus
            _packageRepository.Update(package);                     // update packages DB
            cResult.Success = true;
            return(cResult);
        }
Ejemplo n.º 2
0
        // *********************************************************************

        public static int InsertPackageTransit(PackageTransit t)
        {
            int newId = mockPackageTransitDb.Count();

            t.TransitId = newId;
            mockPackageTransitDb[newId] = t;
            return(newId);
        }
Ejemplo n.º 3
0
        public int InsertTransit(PackageTransit packageTransit)
        {
            using (SqlConnection connection = new SqlConnection(_connectionString))
            {
                connection.Open();

                return(DataAccess.InsertPackageTransit(connection, packageTransit));
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Attempts to update package with "barCode" and its associated transit
        /// sets packages location and status
        /// sets transit's "date received" as today
        /// </summary>
        /// <param name="barCode"></param>
        /// <param name="receiverCentre"></param>
        /// <param name="date"></param>
        /// <returns> Result object according to success or failure </returns>
        public Result Receive(string barCode, DistributionCentre receiverCentre, DateTime receiveDate)
        {                                                                 // (P. 24-03-2015)
            Result  receiveResult = new Result();
            Package package       = _packageRepository.GetPackageWidthBarCode(barCode);

            if (package == null)                         // Case: not found
            {
                receiveResult.ErrorMessage = TransitResult.BarCodeNotFound;
                receiveResult.Success      = false;
                return(receiveResult);
            }
            if (package.CurrentLocation != null && package.CurrentLocation.CentreId == receiverCentre.CentreId)
            {
                receiveResult.Success      = false;
                receiveResult.ErrorMessage = TransitResult.PackageAlreadyAtDestination;
                return(receiveResult);
            }

            PackageTransit activeTransit = _packageRepository.GetTransit(package, receiverCentre);

            if (activeTransit == null)
            {
                // Maybe the open transit has a different destination
                activeTransit = _packageRepository.GetOpenTransit(package);
            }

            // If there is an active transit set Date Received or Date Cancelled and update
            // Even if there is no transit record the receive should still work
            if (activeTransit != null)
            {
                if (receiveDate < activeTransit.DateSent)
                {
                    receiveResult.Success      = false;
                    receiveResult.ErrorMessage = PackageResult.ReceiveDateCannotBeEarlierThanSend;
                    return(receiveResult);
                }

                if (activeTransit.ReceiverCentreId == receiverCentre.CentreId)
                {
                    activeTransit.DateReceived = receiveDate;
                }
                else
                {
                    activeTransit.DateCancelled = receiveDate; // something went wrong with the transit so just cancel it
                }
                _packageRepository.UpdateTransit(activeTransit);
            }

            package.CurrentStatus           = PackageStatus.InStock;   // set packagestatus
            package.CurrentLocationCentreId = receiverCentre.CentreId; // set package location
            package.DistributedByEmployeeId = null;                    // set distributed by employee to null
            _packageRepository.Update(package);                        // update packages DB
            receiveResult.Success = true;
            receiveResult.Id      = package.PackageId;
            return(receiveResult);
        }
Ejemplo n.º 5
0
        public void UpdateTransit(PackageTransit transit)
        {
            using (SqlConnection connection = new SqlConnection(_connectionString))
            {
                connection.Open();

                DataAccess.UpdatePackageTransit(connection, transit);
            }
            return;
        }
Ejemplo n.º 6
0
        public static int InsertPackageTransit(string connectionString, PackageTransit packageTransit)
        {
            using (var ctx = new Entities(connectionString))
            {
                ctx.PackageTransit.Add(packageTransit);
                ctx.SaveChanges();

                return(packageTransit.TransitId);
            }
        }
Ejemplo n.º 7
0
        // *********************************************************************

        public static int AddPackageTransit(Package package, DistributionCentre sender, DistributionCentre receiver, DateTime dateSent)
        {
            PackageTransit newTransit = new PackageTransit();

            newTransit.SenderCentre  = sender;
            newTransit.SenderCentre  = receiver;
            newTransit.Package       = package;
            newTransit.DateSent      = dateSent;
            newTransit.DateReceived  = null;
            newTransit.DateCancelled = null;
            return(InsertPackageTransit(newTransit));
        }
Ejemplo n.º 8
0
        public PackageTransit GetTransit(Package package, DistributionCentre receiver)
        {
            PackageTransit packageTransit = null;

            packageTransit = DataAccess.GetPackageTransit(_connectionString, package, receiver);

            if (packageTransit == null)
            {
                return(null);
            }

            return(packageTransit);
        }
Ejemplo n.º 9
0
        public PackageTransit GetOpenTransit(Package package)
        {
            PackageTransit packageTransit = null;

            packageTransit = DataAccess.GetPackageTransit(_connectionString, package);

            if (packageTransit == null)
            {
                return(null);
            }

            return(packageTransit);
        }
Ejemplo n.º 10
0
        public void TestReceivePackage_Successfully()
        {
            MockPackageRepository myMockPackageRepo = new MockPackageRepository();
            PackageService        packageService    = new PackageService(myMockPackageRepo);
            Package            package1             = MockDataAccess.GetPackage(3);
            DistributionCentre myReceiverCentre     = MockDataAccess.GetDistributionCentre(3);
            int newTransitId = InsertMockTransit(package1, 2, 3);                                       // insert transit

            packageService.Receive(package1.BarCode, myReceiverCentre, DateTime.Today);
            PackageTransit finishedTransit = MockDataAccess.GetPackageTransit(newTransitId);

            Debug.WriteLine(finishedTransit.ToString());
            Assert.IsTrue(finishedTransit.ReceiverCentre == myReceiverCentre);
        }
Ejemplo n.º 11
0
        public int InsertMockTransit(Package Package, int SenderId, int ReceiverId)
        {
            DistributionCentre mySenderCentre   = MockDataAccess.GetDistributionCentre(SenderId);
            DistributionCentre myReceiverCentre = MockDataAccess.GetDistributionCentre(ReceiverId);
            PackageTransit     newTransit       = new PackageTransit();

            newTransit.Package        = Package;
            newTransit.DateSent       = DateTime.Today.AddDays(-2);
            newTransit.SenderCentre   = mySenderCentre;
            newTransit.ReceiverCentre = myReceiverCentre;
            int newTransitId = MockDataAccess.InsertPackageTransit(newTransit);

            return(newTransitId);
        }
Ejemplo n.º 12
0
        public int InsertTransit(PackageTransit PackageTransit)
        {
            Package tempPackage = new Package();

            tempPackage.PackageId = 1;
            tempPackage.BarCode   = "012365423";
            DateTime dateTemp = new DateTime(2015, 05, 20);

            tempPackage.ExpirationDate            = dateTemp;
            tempPackage.PackageType.PackageTypeId = 1;
            tempPackage.CurrentLocation.CentreId  = 1;
            tempPackage.CurrentStatus             = PackageStatus.InStock;
            // need more work to complete!
            return(1);
        }
Ejemplo n.º 13
0
        public static PackageTransit GetPackageTransit(SqlConnection connection, Package package, DistributionCentre receiver)
        {
            PackageTransit packageTransit = null;
            // Define Update Query with Parameter
            string query = "SELECT TransitId, PackageId, SenderCentreId, ReceiverCentreId, " +
                           "DateSent, DateReceived, DateCancelled " +
                           "FROM dbo.PackageTransit " +
                           "WHERE PackageId = @PackageId and " +
                           "ReceiverCentreId = ISNULL(@ReceiverCentreId, ReceiverCentreId) " +
                           "and DateReceived is null and DateCancelled is null";

            var cmd = new SqlCommand(query);

            cmd.Connection = connection;

            cmd.Parameters.AddWithValue("@PackageId", package.PackageId);
            cmd.Parameters.AddWithValue("@ReceiverCentreId", receiver == null ? DBNull.Value : (object)receiver.CentreId);

            using (SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.Default))
            {
                if (reader.Read())
                {
                    packageTransit           = new PackageTransit();
                    packageTransit.TransitId = Convert.ToInt32(reader["TransitId"]);

                    packageTransit.Package           = new Package();
                    packageTransit.Package.PackageId = Convert.ToInt32(reader["PackageId"]);

                    packageTransit.SenderCentre          = new DistributionCentre();
                    packageTransit.SenderCentre.CentreId = Convert.ToInt32(reader["SenderCentreId"]);

                    packageTransit.ReceiverCentre          = new DistributionCentre();
                    packageTransit.ReceiverCentre.CentreId = Convert.ToInt32(reader["ReceiverCentreId"]);
                    packageTransit.DateSent = Convert.ToDateTime(reader["DateSent"]);
                    if (reader["DateReceived"] != DBNull.Value)
                    {
                        packageTransit.DateReceived = Convert.ToDateTime(reader["DateReceived"]);
                    }
                    if (reader["DateCancelled"] != DBNull.Value)
                    {
                        packageTransit.DateCancelled = Convert.ToDateTime(reader["DateCancelled"]);
                    }
                }
            }

            return(packageTransit);
        }
Ejemplo n.º 14
0
        public PackageTransit GetTransit(Package package, DistributionCentre receiver)
        {
            PackageTransit packageTransit = null;

            using (SqlConnection connection = new SqlConnection(_connectionString))
            {
                connection.Open();

                packageTransit = DataAccess.GetPackageTransit(connection, package, receiver);

                if (packageTransit == null)
                {
                    return(null);
                }
            }
            return(packageTransit);
        }
Ejemplo n.º 15
0
        public static void UpdatePackageTransit(string connectionString, PackageTransit transit)
        {            // Define Insert Query with Parameter
            using (var ctx = new Entities(connectionString))
            {
                var packageTransitRecord = (from e in ctx.PackageTransit
                                            where e.TransitId == transit.TransitId
                                            select e).First();

                packageTransitRecord.PackageId        = transit.PackageId;
                packageTransitRecord.SenderCentreId   = transit.SenderCentreId;
                packageTransitRecord.ReceiverCentreId = transit.ReceiverCentreId;
                packageTransitRecord.DateSent         = transit.DateSent;
                packageTransitRecord.DateReceived     = transit.DateReceived;
                packageTransitRecord.DateCancelled    = transit.DateCancelled;

                ctx.SaveChanges();
            }
        }
Ejemplo n.º 16
0
        public static void UpdateTransit(SqlConnection connection, PackageTransit transit)
        {
            string cmdStr = "UPDATE dbo.PackageTransit SET Package = @Package, SenderCentre = @SenderId, " +
                            "ReceiverCentre = @ReceiverCentreId, DateSent = @DateSent , " +
                            " DateReceived = @DateReceived, DateCancelled = @DateCancelled " +
                            "WHERE TransitId = @TransitId ";

            using (var cmd = new SqlCommand(cmdStr, connection))
            {
                cmd.Parameters.AddWithValue("@Package", SqlDbType.Int).Value            = (int)transit.Package.PackageId;
                cmd.Parameters.AddWithValue("@SenderCentre", SqlDbType.Int).Value       = (int)transit.SenderCentre.CentreId;
                cmd.Parameters.AddWithValue("@ReceiverCentre", SqlDbType.Int).Value     = (int)transit.ReceiverCentre.CentreId;
                cmd.Parameters.AddWithValue("@DateSent", SqlDbType.DateTime).Value      = (DateTime)transit.DateSent;
                cmd.Parameters.AddWithValue("@DateReceived", SqlDbType.DateTime).Value  = (DateTime)transit.DateReceived;
                cmd.Parameters.AddWithValue("@DateCancelled", SqlDbType.DateTime).Value = (DateTime)transit.DateCancelled;
                int effected = cmd.ExecuteNonQuery();
            }
        }
Ejemplo n.º 17
0
        public static PackageTransit GetPackageTransit(string connectionString, Package package)
        {
            PackageTransit packageTransit = null;

            // Define Update Query with Parameter

            using (var ctx = new Entities(connectionString))
            {
                var packageTransitRecord = (from e in ctx.PackageTransit
                                            where e.PackageId == package.PackageId &&
                                            e.DateReceived == null &&
                                            e.DateCancelled == null
                                            select e).FirstOrDefault();

                packageTransit = packageTransitRecord;
            }

            return(packageTransit);
        }
Ejemplo n.º 18
0
        public static int InsertPackageTransit(SqlConnection connection, PackageTransit packageT)
        {                                                                       // (p. 24/03/15 )
            string query = " INSERT INTO dbo.PackageTransit (PackageId , SenderCentreId,  " +
                           " ReceiverCentreId, DateSent, DateReceived, DateCancelled)  " +
                           " VALUES (@Package , @SenderCentre, @ReceiverCentre, @DateSent, @DateReceived, @DateCancelled)" +
                           " SET @newId = SCOPE_IDENTITY();";

            //var cmd = new SqlCommand(query);
            //cmd.Connection = connection;
            using (var cmd = new SqlCommand(query, connection) /*SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.Default)*/)
            {
                cmd.Parameters.Add("@Package", SqlDbType.Int).Value        = (int)packageT.Package.PackageId;
                cmd.Parameters.Add("@SenderCentre", SqlDbType.Int).Value   = (int)packageT.SenderCentre.CentreId;
                cmd.Parameters.Add("@ReceiverCentre", SqlDbType.Int).Value = (int)packageT.ReceiverCentre.CentreId;
                cmd.Parameters.Add("@DateSent", SqlDbType.DateTime).Value  = (DateTime)packageT.DateSent;
                if (packageT.DateReceived == null)
                {
                    cmd.Parameters.Add("@DateReceived", SqlDbType.DateTime).Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters.Add("@DateReceived", SqlDbType.DateTime).Value = (DateTime)packageT.DateReceived;
                }
                if (packageT.DateCancelled == null)
                {
                    cmd.Parameters.Add("@DateCancelled", SqlDbType.DateTime).Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters.Add("@DateCancelled", SqlDbType.DateTime).Value = (DateTime)packageT.DateCancelled;
                }
                cmd.Parameters.Add("@newId", SqlDbType.Int).Direction = ParameterDirection.Output;

                cmd.CommandType = CommandType.Text;
                string qry    = cmd.CommandText;
                int    effect = cmd.ExecuteNonQuery();
                //cmd.ExecuteScalar();
                return((int)cmd.Parameters["@newId"].Value);
            }
        }
Ejemplo n.º 19
0
        public static List <PackageTransit> GetAllPackageTransits(SqlConnection connection)
        {                                                       // (P. 04/04/2015)
            var    allTransits = new List <PackageTransit>();
            string query       = "SELECT TransitId, PackageId, SenderCentreId, ReceiverCentreId, DateSent, DateReceived, DateCancelled FROM PackageTransit ORDER BY TransitId";
            var    cmd         = new SqlCommand(query);

            cmd.Connection = connection;

            //Console.WriteLine(query);            //string a = Console.ReadLine();

            using (SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.Default))
            {
                while (reader.Read())
                {
                    //Console.WriteLine(reader["transitId"]);               //Console.ReadLine();
                    var transit = new PackageTransit();
                    transit           = new PackageTransit();
                    transit.TransitId = Convert.ToInt32(reader["transitId"]);
                    transit.Package   = DataAccess.GetPackage(connection, Convert.ToInt32(reader["PackageId"]));
                    // .PackageId=Convert.ToInt32(reader["PackageId"]);
                    transit.SenderCentre = DataAccess.GetDistributionCentre(connection, Convert.ToInt32(reader["SenderCentreId"]));
                    //transit.SenderCentre.CentreId = Convert.ToInt32(reader["SenderCentreId"]);
                    transit.ReceiverCentre = DataAccess.GetDistributionCentre(connection, Convert.ToInt32(reader["ReceiverCentreId"]));
                    // .CentreId = Convert.ToInt32(reader["ReceiverCentreId"]);
                    transit.DateSent = Convert.ToDateTime(reader["DateSent"]);
                    if (reader["DateReceived"] != DBNull.Value)
                    {
                        transit.DateReceived = Convert.ToDateTime(reader["DateReceived"]);
                    }
                    if (reader["DateCancelled"] != DBNull.Value)
                    {
                        transit.DateReceived = Convert.ToDateTime(reader["DateCancelled"]);
                    }

                    allTransits.Add(transit);
                }
            }
            return(allTransits);
        }
Ejemplo n.º 20
0
        public static void UpdatePackageTransit(SqlConnection connection, PackageTransit transit)
        {            // Define Insert Query with Parameter
            string cmdStr = "UPDATE dbo.PackageTransit " +
                            "SET PackageId = @PackageId, " +
                            "SenderCentreId = @SenderCentreId, " +
                            "ReceiverCentreId = @ReceiverCentreId, " +
                            "DateSent = @DateSent, " +
                            "DateReceived = @DateReceived," +
                            "DateCancelled = @DateCancelled " +
                            " WHERE TransitId = @TransitId";

            using (var cmd = new SqlCommand(cmdStr, connection))
            {
                cmd.Parameters.AddWithValue("@PackageId", transit.Package.PackageId);
                cmd.Parameters.AddWithValue("@SenderCentreId", transit.SenderCentre.CentreId);
                cmd.Parameters.AddWithValue("@ReceiverCentreId", transit.ReceiverCentre.CentreId);
                cmd.Parameters.AddWithValue("@DateSent", transit.DateSent);
                cmd.Parameters.AddWithValue("@DateReceived", transit.DateReceived == null ? DBNull.Value : (object)transit.DateReceived.Value);
                cmd.Parameters.AddWithValue("@DateCancelled", transit.DateCancelled == null ? DBNull.Value : (object)transit.DateCancelled.Value);
                cmd.Parameters.AddWithValue("@TransitId", transit.TransitId);

                int effected = cmd.ExecuteNonQuery();
            }
        }
Ejemplo n.º 21
0
 public static void UpdatePackageTransit(PackageTransit transit)
 {
     mockPackageTransitDb[transit.TransitId] = transit;
 }
Ejemplo n.º 22
0
 public int InsertTransit(PackageTransit packageTransit)
 {
     return(DataAccess.InsertPackageTransit(_connectionString, packageTransit));
 }
Ejemplo n.º 23
0
 public void UpdateTransit(PackageTransit transit)
 {
     DataAccess.UpdatePackageTransit(_connectionString, transit);
 }
Ejemplo n.º 24
0
 public void UpdateTransit(PackageTransit pt)
 {
     MockDataAccess.UpdatePackageTransit(pt);
 }
Ejemplo n.º 25
0
        //public int InsertTransit(PackageTransit PackageTransit)
        //{
        //    Package tempPackage = new Package();
        //    tempPackage.PackageId = 1;
        //    tempPackage.BarCode = "012365423";
        //    DateTime dateTemp = new DateTime(2015, 05, 20);
        //    tempPackage.ExpirationDate = dateTemp;
        //    tempPackage.PackageType.PackageTypeId = 1;
        //    tempPackage.CurrentLocation.CentreId = 1;
        //    tempPackage.CurrentStatus = PackageStatus.InStock;
        //    // need more work to complete!
        //    return 1;
        //}
        public int InsertTransit(PackageTransit PackageTransit)
        {
            int transitId = MockDataAccess.InsertPackageTransit(PackageTransit);

            return(transitId);
        }
Ejemplo n.º 26
0
 public string TransitToString(PackageTransit t)
 {
     return("Id:" + t.TransitId + " / PId:" + t.PackageId + " / from:" + t.SenderCentreId + " / to:" + t.ReceiverCentreId);
 }
Ejemplo n.º 27
0
        /// <summary>
        /// Extended Send method which take Sender and Receiver Center and also do more check,
        /// do some check in package, sender and reciever center and also ckeck the sendDate.
        /// If the checks are passed the set the Package.CurrentStatus = InTransit,
        /// Set the Package.CurrentLocation = Null and Update(Package)
        /// and instantiate new PackageTransit object
        /// </summary>
        /// <param name="barCode"></param>
        /// <param name="senderCentre"></param>
        /// <param name="receiverCentre"></param>
        /// <param name="sendDate"></param>
        /// <returns> Result </returns>
        public Result Send(Package package, DistributionCentre senderCentre, DistributionCentre receiverCentre, DateTime sendDate)
        {
            Result sendResult = new Result();

            if (package == null)                                                  // Case: not found
            {
                sendResult.ErrorMessage = PackageResult.BarCodeNotFound;
                sendResult.Success      = false;
                return(sendResult);
            }
            if (package.CurrentStatus != PackageStatus.InStock)                   // Case: not in stock
            {
                sendResult.ErrorMessage = PackageResult.PackageIsNotInStock;
                sendResult.Success      = false;
                return(sendResult);
            }
            if (package.CurrentLocation.CentreId == null)                         // Cass: Package already in Transit
            {
                sendResult.ErrorMessage = PackageResult.PackageInTransit + " or" + PackageResult.PackageElsewhere;
                sendResult.Success      = false;
                return(sendResult);
            }
            if (package.CurrentLocation.CentreId != senderCentre.CentreId)        //  Case: not in this centre
            {
                sendResult.ErrorMessage = PackageResult.PackageElsewhere;
                sendResult.Success      = false;
                return(sendResult);
            }
            if (receiverCentre == null)                                           // Case: Receiver Centre
            {
                sendResult.ErrorMessage = TransitResult.ReceiverCentreNull;
                sendResult.Success      = false;
                return(sendResult);
            }
            if (senderCentre.CentreId == receiverCentre.CentreId)
            {
                sendResult.ErrorMessage = TransitResult.PackageAlreadyAtDestination;
                sendResult.Success      = false;
                return(sendResult);
            }

            // System.DateTime.Now.AddDays(-1) -> to get yesterday. might send the package on the same day
            //timeCompare DateTime.Compare(t1,t2)
            //Less than zero t1 is earlier than t2. | Zero t1 is the same as t2. | Greater than zero t1 is later than t2.
            int timeCompare = DateTime.Compare(System.DateTime.Now.AddDays(-1), sendDate);

            if (timeCompare > zero)
            {
                sendResult.ErrorMessage = TransitResult.InvalidSendDate;
                sendResult.Success      = false;
                return(sendResult);
            }

            //Update the package
            package.CurrentStatus   = PackageStatus.InTransit;      // Proceed to set it as intransit
            package.CurrentLocation = null;                         // Remove current location
            _packageRepository.Update(package);                     // Update package
            sendResult.Success = true;

            //Create new PackageTransit
            PackageTransit packageTransit = new PackageTransit
            {
                Package        = package,
                DateSent       = sendDate,
                DateReceived   = null,
                DateCancelled  = null,
                SenderCentre   = senderCentre,
                ReceiverCentre = receiverCentre,
            };
            int TransitId = _packageRepository.InsertTransit(packageTransit);

            return(sendResult);
        }