Beispiel #1
0
        /// <summary>
        /// Attemps to place the spot, it's associated Production Order and Job back into their previous state based off of each of their completed dates
        /// </summary>
        /// <param name="spot"></param>
        /// <param name="context"></param>
        public static void CancelSpotReRecordRequest(IASpot spot, DataAccessDataContext context)
        {
            spot = SetSpotToPreviousStatus(spot, context);

            bool allSpotsFinishedWithinPO = ProductionOrdersService.AreAllSpotsFinished(spot.IAProductionOrder, context);
            bool allProductionOrdersComplete = JobsService.AreAllProducitonOrdersComplete(spot.IAProductionOrder.IAJob, context);
            bool jobWasPreviouslyCompleted = spot.IAProductionOrder.IAJob.WasJobPreviouslyCompleted();
            JobStatus jobStatus = JobStatus.Incomplete;
            ProductionOrderStatus productionOrderStatus = ProductionOrderStatus.Incomplete;

            if (allSpotsFinishedWithinPO && allProductionOrdersComplete)
            {
                //Production orders and spots are completed, if the job was previously completed, then fast forward it back to that
                jobStatus = jobWasPreviouslyCompleted ? JobStatus.Complete : JobStatus.CompleteNeedsProduction;
                productionOrderStatus = ProductionOrderStatus.Complete;
            }
            else if (allSpotsFinishedWithinPO && !allProductionOrdersComplete)
            {
                //At least one PO isn't complete within the parent job, but all the spots within this PO are completed
                jobStatus = JobStatus.Incomplete;
                productionOrderStatus = ProductionOrderStatus.Complete;
            }
            else if (!allSpotsFinishedWithinPO && !allProductionOrdersComplete)
            {
                //This PO and maybe others are still not completed
                jobStatus = JobStatus.Incomplete;
                productionOrderStatus = ProductionOrderStatus.Incomplete;
            }

            spot.IAProductionOrder.IAJob.IAJobStatusID = JobsService.GetStatusOption(jobStatus, context).ID;
            spot.IAProductionOrder.IAProductionOrderStatusID = ProductionOrdersService.GetStatusOption(productionOrderStatus, context).ID;
            context.SubmitChanges();
        }
Beispiel #2
0
        static void GetDomainAddresses()
        {
            DataAccessDataContext dadc = new DataAccessDataContext();
            StringBuilder         sb   = new StringBuilder();

            foreach (CLCity city in dadc.CLCities)
            {
                IPHostEntry ipe = Dns.GetHostEntry(city.Name + ".craigslist.org");
                sb.AppendLine(city.Name.PadRight(15) + string.Join <IPAddress>(", ", ipe.AddressList));
                city.IP = ipe.AddressList.FirstOrDefault().ToString();
            }
            dadc.SubmitChanges();
            File.WriteAllText("CityAddresses.txt", sb.ToString());
        }
Beispiel #3
0
        private byte[] ValidatePacket(long auth_key_id, byte[] msg_key, byte[] data)
        {
            int SessionTimeOutInSeccond    = 8640000;//100 days
            int packetTimeOutInMiliSeccond = 100 * 1000;

            var db = new DataAccessDataContext(connectionString);

            if (!db.MBProto_user_sessionTbls.Any(c => c.authKeyID == auth_key_id))
            {
                throw new Exceptions.AuthException(new Exceptions.AuthException.AuthKeyInvalid());
            }

            var se = db.MBProto_user_sessionTbls.Single(c => c.authKeyID == auth_key_id);

            if (se.UserTbl.status != (byte)DeleteStatus.Active)
            {
                throw new Exceptions.AuthException(new Exceptions.AuthException.UserNotRegistered());
            }


            var dt     = se.regDate;
            var nextDT = dt.AddSeconds(SessionTimeOutInSeccond);

            if (dt > nextDT)
            {
                db.MBProto_user_sessionTbls.DeleteOnSubmit(se);
                db.SubmitChanges();
                throw new Exceptions.AuthException(new Exceptions.AuthException.SessionExpired());
            }

            byte[] DiffKey = Convert.FromBase64String(se.diffKey);

            byte[] preRuntimeAESKey = new byte[DiffKey.Length + msg_key.Length];

            Buffer.BlockCopy(DiffKey, 0, preRuntimeAESKey, 0, DiffKey.Length);
            Buffer.BlockCopy(msg_key, 0, preRuntimeAESKey, DiffKey.Length, msg_key.Length);

            byte[] runtimeAESKey = SHA256.Create().ComputeHash(preRuntimeAESKey);

            byte[] plainData = new AES(runtimeAESKey).Decrypt(data);

            MemoryStream ms = new MemoryStream(plainData);

            using (BinaryReader messageReader = new BinaryReader(ms))
            {
                long salt      = messageReader.ReadInt64();
                long sessionID = messageReader.ReadInt64();
                long time      = messageReader.ReadInt64();
                int  length    = messageReader.ReadInt32();
                long sequence  = messageReader.ReadInt64();

                if (se.sessionID != sessionID)
                {
                    throw new Exceptions.AuthException(new Exceptions.AuthException.PacketInvalid());
                }

                byte[] saltArray      = BitConverter.GetBytes(salt);
                byte[] sessionIDArray = BitConverter.GetBytes(sessionID);
                byte[] timeArray      = BitConverter.GetBytes(time);
                byte[] lengthArray    = BitConverter.GetBytes(length);
                byte[] sequenceArray  = BitConverter.GetBytes(sequence);

                byte[] clearMsgKey = new byte
                                     [saltArray.Length
                                      + sessionIDArray.Length
                                      + timeArray.Length
                                      + lengthArray.Length
                                      + sequenceArray.Length];

                Buffer.BlockCopy(saltArray, 0, clearMsgKey, 0, saltArray.Length);
                Buffer.BlockCopy(sessionIDArray, 0, clearMsgKey, saltArray.Length, sessionIDArray.Length);
                Buffer.BlockCopy(timeArray, 0, clearMsgKey, saltArray.Length + sessionIDArray.Length, timeArray.Length);
                Buffer.BlockCopy(lengthArray, 0, clearMsgKey, saltArray.Length + sessionIDArray.Length + timeArray.Length, lengthArray.Length);
                Buffer.BlockCopy(sequenceArray, 0, clearMsgKey, saltArray.Length + sessionIDArray.Length + lengthArray.Length + timeArray.Length, sequenceArray.Length);

                byte[] generatedMsgKey = SHA256.Create().ComputeHash(clearMsgKey).Take(16).ToArray();

                long now     = (long)Convert.ToInt64((DateTime.UtcNow - new DateTime(1970, 1, 1)).Milliseconds);
                long expDate = time + (long)packetTimeOutInMiliSeccond;

                if (now > expDate)
                {
                    throw new Exceptions.AuthException(new Exceptions.AuthException.PacketInvalid());
                }

                byte[] plainBytes = messageReader.ReadBytes((int)messageReader.BaseStream.Length - (int)messageReader.BaseStream.Position);

                MemoryStream mst = new MemoryStream(plainBytes);
                using (BinaryReader messageReadert = new BinaryReader(mst))
                {
                    uint code = messageReadert.ReadUInt32();
                    plainBytes = messageReadert.ReadBytes((int)messageReadert.BaseStream.Length - (int)messageReadert.BaseStream.Position);
                    byte[] codeArray = BitConverter.GetBytes(code);
                    byte[] result    = new byte[plainBytes.Length + sessionIDArray.Length + codeArray.Length];
                    Buffer.BlockCopy(codeArray, 0, result, 0, codeArray.Length);
                    Buffer.BlockCopy(sessionIDArray, 0, result, codeArray.Length, sessionIDArray.Length);
                    Buffer.BlockCopy(plainBytes, 0, result, codeArray.Length + sessionIDArray.Length, plainBytes.Length);
                    return(result);
                }
            }
        }
Beispiel #4
0
        public int DeleteAllUsers()
        {
            DataAccessDataContext ctx = new DataAccessDataContext();
            
            var userList = ctx.Users.ToList();
            ctx.Users.DeleteAllOnSubmit(userList);

            var addressList = ctx.Addresses.ToList();
            ctx.Addresses.DeleteAllOnSubmit(addressList);

            var authList = ctx.Auths.ToList();
            ctx.Auths.DeleteAllOnSubmit(authList);

            ctx.SubmitChanges();

            return 204;
        }
Beispiel #5
0
        /// <summary>
        /// DeleteUser
        /// </summary>
        /// <param name="mobile"></param>
        public int DeleteUser(string mobile)
        {
            DataAccessDataContext ctx = new DataAccessDataContext();
            var userList = ctx.Users.ToList();
            foreach(var user in userList)
            {
                ctx.Users.DeleteOnSubmit(user);
            }

            var addressList = ctx.Addresses.ToList();
            foreach (var address in addressList)
            {
                ctx.Addresses.DeleteOnSubmit(address);
            }

            var authList = ctx.Auths.ToList();

            foreach (var auth in authList)
            {
                ctx.Auths.DeleteOnSubmit(auth);
            }

            ctx.SubmitChanges();

            return 204;
        }
Beispiel #6
0
        /// <summary>
        /// RegisterKey
        /// </summary>
        /// <param name="key"></param>
        /// <param name="mobileNumber"></param>
        /// <returns></returns>
        public int RegisterUserKey(string key, string mobile)
        {
            DataAccessDataContext ctx = new DataAccessDataContext();
            var user = ctx.Users.Where(@w => @w.Mobile == mobile).First();
            var authSingle = ctx.Auths.Where(@w => @w.Id == user.AuthId).First();

            authSingle.Key = key;
            authSingle.ApplicationId = key.Replace(user.Name, "").Replace(mobile, "");
            ctx.SubmitChanges();

            return 203;
        }
Beispiel #7
0
        /// <summary>
        /// Signin User
        /// </summary>
        /// <param name="name"></param>
        /// <param name="mobile"></param>
        /// <param name="cityCode"></param>
        /// <returns></returns>
        public int SigninUser(string name, string mobile, string cityCode, string gcmToken)
        {
            DataAccessDataContext ctx = new DataAccessDataContext();
            var user = ctx.Users.Where(@w => @w.Name == name && @w.Mobile == mobile);
            bool isExists = user.Count() == 1;

            if (!isExists)
            {
                return 103;
            }
            else
            {
                if (!string.IsNullOrEmpty(gcmToken))
                {
                    var authSingle = ctx.Auths.Where(@w => @w.Id == user.First().AuthId).First();
                    authSingle.GCMToken = gcmToken;
                    ctx.SubmitChanges();
                }

                return 202;
            }
        }
Beispiel #8
0
        /// <summary>
        /// InsertAddressMetaData
        /// </summary>
        /// <param name="ctx"></param>
        /// <returns></returns>
        private static Guid InsertAddressMetaData(DataAccessDataContext ctx)
        {
            //Insert Address
            Guid addressId = Guid.NewGuid();
            Address address = new Address
            {
                Id = addressId,
                Address1 = ""
            };

            ctx.Addresses.InsertOnSubmit(address);
            ctx.SubmitChanges();
            return addressId;
        }
Beispiel #9
0
        /// <summary>
        /// InsertAuthSingleMetaData
        /// </summary>
        /// <param name="applicationId"></param>
        /// <param name="key"></param>
        /// <param name="ctx"></param>
        /// <returns></returns>
        private static Guid InsertAuthSingleMetaData(string applicationId, string gcmToken, string refCode, string genRefCode, string key, DataAccessDataContext ctx)
        {
            //Insert Auth key
            Guid authId = Guid.NewGuid();
            Auth authSingle = new Auth
            {
                Id = authId,
                GCMToken = gcmToken,
                REFCODE = genRefCode,
                Key = key,
                ApplicationId = applicationId
            };

            ctx.Auths.InsertOnSubmit(authSingle);
            ctx.SubmitChanges();
            return authId;
        }
Beispiel #10
0
        /// <summary>
        /// InsertUserMetaData
        /// </summary>
        /// <param name="name"></param>
        /// <param name="mobile"></param>
        /// <param name="ctx"></param>
        /// <param name="cityId"></param>
        /// <param name="addressId"></param>
        /// <param name="authId"></param>
        private static void InsertUserMetaData(string name, string mobile, DataAccessDataContext ctx, Guid cityId, Guid addressId, Guid authId)
        {
            //Insert User Information.
            Guid userId = Guid.NewGuid();
            User user = new User
            {
                Id = userId,
                Name = name,
                Mobile = mobile,
                CityId = cityId,
                AddressId = addressId,
                Active = true,
                AuthId = authId
            };

            ctx.Users.InsertOnSubmit(user);
            ctx.SubmitChanges();
        }
Beispiel #11
0
 /// <summary>
 /// Submit Database Changes
 /// </summary>
 private void SubmitData()
 {
     context.SubmitChanges();
 }
        private static void UpdateStaffRequestDashboardSettingsInDB(StaffRequestDashboardQuery query, Guid userID, DataAccessDataContext context)
        {
            IAUserSettingsGrid oIAUserSettingsGrid = context.IAUserSettingsGrids.SingleOrDefault(row => row.MPUserID == userID && row.Name == "Staff Requests");
            if (oIAUserSettingsGrid == null)
            {
                oIAUserSettingsGrid.MPUserID = userID;
                oIAUserSettingsGrid.Name = "Staff Requests";
                oIAUserSettingsGrid.Filters = GetStaffRequestsDashboardFilterSeralized(query);
                oIAUserSettingsGrid.SortExpression = query.OrderBy_ForQuery;
                context.IAUserSettingsGrids.InsertOnSubmit(oIAUserSettingsGrid);
            }
            else
            {
                oIAUserSettingsGrid.Filters = GetStaffRequestsDashboardFilterSeralized(query);
                oIAUserSettingsGrid.SortExpression = query.OrderBy_ForQuery;
            }

            context.SubmitChanges();
        }
Beispiel #13
0
        private static IASpot SetSpotToPreviousStatus(IASpot spot, DataAccessDataContext context)
        {
            SpotStatus spotStatus = SpotService.GetSpotPreviousStatus(spot);
            spot.IASpotStatusID = GetStatusOption(spotStatus, context).ID;
            context.SubmitChanges();

            if (spot.IAProductionOrder.IAProductionOrderStatusID == ProductionOrdersService.GetStatusOption(ProductionOrderStatus.Incomplete, context).ID)
            {
                if (ProductionOrdersService.AreAllSpotsFinished(spot.IAProductionOrder, context))
                {
                    spot.IAProductionOrder.IAProductionOrderStatusID = ProductionOrdersService.GetStatusOption(ProductionOrderStatus.Complete, context).ID;
                    context.SubmitChanges();
                }
            }

            return spot;
        }
Beispiel #14
0
        public static void MarkSpotForReRecord(IASpot spot, DataAccessDataContext context)
        {
            spot.IAProductionOrder.IAJob.IAJobStatusID = JobsService.GetStatusOption(JobStatus.Incomplete, context).ID;
            spot.IAProductionOrder.IAProductionOrderStatusID = ProductionOrdersService.GetStatusOption(ProductionOrderStatus.Incomplete, context).ID;
            spot.IASpotStatusID = GetStatusOption(SpotStatus.NeedsFix, context).ID;

            // For each file in the spot that is a talent file, mark them as not deletable
            SpotFileType spotFileType = SpotFileTypeService.GetSpotTypeByName("Talent", context);
            foreach (IASpotFile oIASpotFile in spot.IASpotFiles.Where(row => row.IASpotFileTypeID == spotFileType.SpotFileTypeId))
            {
                oIASpotFile.IsDeletable = false;
            }

            context.SubmitChanges();
        }