예제 #1
0
        public static UserSchedulingModel ToModel(this UserSchedulingViewModel entity)
        {
            if (entity == null)
            {
                return(null);
            }

            var model = new UserSchedulingModel
            {
                FacilityID           = entity.FacilityID,
                ResourceID           = entity.ResourceID,
                UserFacilitySchedule = new List <UserFacilitySchedulingModel>(),
                ModifiedOn           = entity.ModifiedOn
            };

            if (entity.UserFacilitySchedule != null)
            {
                entity.UserFacilitySchedule.ForEach(delegate(UserFacilitySchedulingViewModel schedule)
                {
                    var transformedModel = schedule.ToModel();
                    model.UserFacilitySchedule.Add(transformedModel);
                });
            }

            return(model);
        }
예제 #2
0
        private string GenerateRequestXml(UserSchedulingModel userFacilitySchedule)
        {
            using (StringWriter sWriter = new StringWriter())
            {
                XmlWriterSettings settings = new XmlWriterSettings();
                settings.OmitXmlDeclaration = true;

                using (XmlWriter XWriter = XmlWriter.Create(sWriter))
                {
                    XWriter.WriteStartElement("RequestXMLValue");

                    if (userFacilitySchedule.UserFacilitySchedule != null)
                    {
                        foreach (UserFacilitySchedulingModel userSchedule in userFacilitySchedule.UserFacilitySchedule)
                        {
                            foreach (UserFacilityTimeSchedulingModel userFacilityTime in userSchedule.UserFacilityTimeSchedule)
                            {
                                XWriter.WriteStartElement("Scheduling");
                                XWriter.WriteElementString("ResourceAvailabilityID", userFacilityTime.ResourceAvailabilityID.ToString());
                                XWriter.WriteElementString("DefaultFacilityID", userFacilitySchedule.FacilityID.ToString());
                                XWriter.WriteElementString("ScheduleTypeID", userSchedule.ScheduleTypeID.ToString());
                                XWriter.WriteElementString("DayOfWeekID", userSchedule.DayOfWeekID.ToString());
                                XWriter.WriteElementString("AvailabilityStartTime", userFacilityTime.AvailabilityStartTime.ToString());
                                XWriter.WriteElementString("AvailabilityEndTime", userFacilityTime.AvailabilityEndTime.ToString());
                                XWriter.WriteEndElement();
                            }
                        }
                    }
                    XWriter.WriteEndElement();
                }

                return(sWriter.ToString());
            }
        }
예제 #3
0
        public Response <UserSchedulingModel> GetUserFacilities(int userID)
        {
            var repository = _unitOfWork.GetRepository <UserFacilitySchedulingDataModel>(SchemaName.Scheduling);
            var procParams = new List <SqlParameter> {
                new SqlParameter("ResourceID", userID),
                new SqlParameter("ResourceTypeID", 2)
            };
            var userFacilitiesResult = repository.ExecuteStoredProc("usp_GetResourceAvailability", procParams);

            var result = userFacilitiesResult.CloneResponse <UserSchedulingModel>();

            result.ID = userID;
            if (result.ResultCode != 0)
            {
                return(result);
            }

            result.DataItems = new List <UserSchedulingModel>();

            var groupByFacilities = from userFacility in userFacilitiesResult.DataItems
                                    group userFacility by userFacility.FacilityID;

            foreach (var groupFacility in groupByFacilities)
            {
                var userFacility = new UserSchedulingModel();
                userFacility.FacilityID = groupFacility.Key;

                var groupByDays = groupFacility.GroupBy(x => x.DayOfWeekID);

                foreach (var groupByDay in groupByDays)
                {
                    var userFacilityScheduling = new UserFacilitySchedulingModel();
                    userFacilityScheduling.DayOfWeekID = groupByDay.Key;
                    foreach (var item in groupByDay)
                    {
                        userFacilityScheduling.Days = item.Days;
                        var userFacilityTimeScheduling = new UserFacilityTimeSchedulingModel();
                        userFacilityTimeScheduling.ResourceAvailabilityID = item.ResourceAvailabilityID;
                        userFacilityTimeScheduling.AvailabilityStartTime  = item.AvailabilityStartTime;
                        userFacilityTimeScheduling.AvailabilityEndTime    = item.AvailabilityEndTime;
                        userFacilityScheduling.UserFacilityTimeSchedule.Add(userFacilityTimeScheduling);
                    }
                    userFacility.UserFacilitySchedule.Add(userFacilityScheduling);
                }

                userFacility.UserFacilitySchedule = userFacility.UserFacilitySchedule.OrderBy(x => x.DayOfWeekID).ToList();
                result.DataItems.Add(userFacility);
            }

            return(result);
        }
예제 #4
0
        public static UserSchedulingViewModel ToViewModel(this UserSchedulingModel entity)
        {
            if (entity == null)
            {
                return(null);
            }

            var model = new UserSchedulingViewModel
            {
                FacilityID           = entity.FacilityID,
                ResourceID           = entity.ResourceID,
                UserFacilitySchedule = new List <UserFacilitySchedulingViewModel>(),
                FacilitySchedule     = new List <UserFacilitySchedulingViewModel>(),
                ModifiedOn           = entity.ModifiedOn
            };

            if (entity.UserFacilitySchedule != null)
            {
                entity.UserFacilitySchedule.ForEach(delegate(UserFacilitySchedulingModel schedule)
                {
                    var transformedModel = schedule.ToViewModel();
                    model.UserFacilitySchedule.Add(transformedModel);
                    model.RowCount += transformedModel.RowCount;
                });
            }

            if (entity.FacilitySchedule != null)
            {
                entity.FacilitySchedule.ForEach(delegate(UserFacilitySchedulingModel schedule)
                {
                    var transformedModel = schedule.ToViewModel();
                    model.FacilitySchedule.Add(transformedModel);
                });
            }

            var firstUserFacility = model.UserFacilitySchedule.FirstOrDefault();

            if (firstUserFacility != null)
            {
                firstUserFacility.IsFirst = true;
            }

            var lastUserFacility = model.UserFacilitySchedule.LastOrDefault();

            if (lastUserFacility != null)
            {
                lastUserFacility.IsLast = true;
            }

            return(model);
        }
        public void SaveUserFacilitySchedule_Success()
        {
            var url = baseRoute + "SaveUserFacilitySchedule";

            var scheduleMonday = new UserFacilitySchedulingModel {
                FacilityID               = 3,
                DayOfWeekID              = 1,
                ScheduleTypeID           = 4,
                UserFacilityTimeSchedule = new  List <UserFacilityTimeSchedulingModel> {
                    new  UserFacilityTimeSchedulingModel {
                        ResourceAvailabilityID = 0, AvailabilityStartTime = "0800", AvailabilityEndTime = "1200"
                    },
                    new  UserFacilityTimeSchedulingModel {
                        ResourceAvailabilityID = 0, AvailabilityStartTime = "1300", AvailabilityEndTime = "1200"
                    }
                }
            };

            var scheduleTuesday = new UserFacilitySchedulingModel {
                FacilityID               = 3,
                DayOfWeekID              = 2,
                ScheduleTypeID           = 4,
                UserFacilityTimeSchedule = new  List <UserFacilityTimeSchedulingModel> {
                    new  UserFacilityTimeSchedulingModel {
                        ResourceAvailabilityID = 0, AvailabilityStartTime = "0800", AvailabilityEndTime = "1200"
                    },
                    new  UserFacilityTimeSchedulingModel {
                        ResourceAvailabilityID = 0, AvailabilityStartTime = "1300", AvailabilityEndTime = "1200"
                    }
                }
            };

            var userSchedulingModel = new UserSchedulingModel
            {
                FacilityID           = 3,
                ResourceID           = 1,
                UserFacilitySchedule = new List <UserFacilitySchedulingModel> {
                    scheduleMonday, scheduleTuesday
                }
            };

            var response = communicationManager.Post <UserSchedulingModel, Response <UserSchedulingModel> >(userSchedulingModel, url);

            Assert.IsTrue(response != null, "Response can't be null");
            Assert.IsTrue(response.ResultCode == 0, "Result Code must be 0");
        }
예제 #6
0
        public Response <UserSchedulingModel> SaveUserFacilitySchedule(UserSchedulingModel userFacilitySchedule)
        {
            var repository = _unitOfWork.GetRepository <UserSchedulingModel>(SchemaName.Scheduling);

            SqlParameter resourceIDParam     = new SqlParameter("ResourceID", userFacilitySchedule.ResourceID);
            SqlParameter resourceTypeIDParam = new SqlParameter("ResourceTypeID", 2);
            SqlParameter facilityIDParam     = new SqlParameter("FacilityID", userFacilitySchedule.FacilityID);
            SqlParameter schedulingXMLParam  = new SqlParameter("SchedulingXML", GenerateRequestXml(userFacilitySchedule));

            schedulingXMLParam.DbType = System.Data.DbType.Xml;
            SqlParameter modifiedOnParam = new SqlParameter("ModifiedOn", userFacilitySchedule.ModifiedOn ?? DateTime.Now);

            List <SqlParameter> procParams = new List <SqlParameter>()
            {
                resourceIDParam, resourceTypeIDParam, facilityIDParam, schedulingXMLParam, modifiedOnParam
            };
            var result = _unitOfWork.EnsureInTransaction <Response <UserSchedulingModel> >(repository.ExecuteNQStoredProc, "usp_SaveResourceAvailability", procParams, adonResult: true);

            return(result);
        }
예제 #7
0
        public Response <UserSchedulingModel> GetUserFacilitySchedule(int userID, int facilityID)
        {
            var result = new Response <UserSchedulingModel>();

            result.ResultCode = 0;

            var dataItem = new List <UserSchedulingModel>();
            var model    = new UserSchedulingModel();

            model.FacilityID = facilityID;

            var repository = _unitOfWork.GetRepository <UserFacilitySchedulingDataModel>(SchemaName.Scheduling);
            var procParams = new List <SqlParameter> {
                new SqlParameter("ResourceID", userID),
                new SqlParameter("ResourceTypeID", 2),
                new SqlParameter("FacilityID", facilityID)
            };
            var userFacilitiesResult = repository.ExecuteStoredProc("usp_GetResourceAvailabilityByFacilityID", procParams);

            var groupByuserFacilities = userFacilitiesResult.DataItems.GroupBy(x => x.DayOfWeekID);

            foreach (var groupByuserFacility in groupByuserFacilities)
            {
                var userFacilityScheduling = new UserFacilitySchedulingModel();
                userFacilityScheduling.DayOfWeekID = groupByuserFacility.Key;
                foreach (var item in groupByuserFacility)
                {
                    userFacilityScheduling.Days           = item.Days;
                    userFacilityScheduling.ScheduleTypeID = item.ScheduleTypeID;
                    var userFacilityTimeScheduling = new UserFacilityTimeSchedulingModel();
                    userFacilityTimeScheduling.ResourceAvailabilityID = item.ResourceAvailabilityID;
                    userFacilityTimeScheduling.AvailabilityStartTime  = item.AvailabilityStartTime;
                    userFacilityTimeScheduling.AvailabilityEndTime    = item.AvailabilityEndTime;
                    userFacilityScheduling.UserFacilityTimeSchedule.Add(userFacilityTimeScheduling);
                }
                model.UserFacilitySchedule.Add(userFacilityScheduling);
            }

            if (model.UserFacilitySchedule != null)
            {
                model.UserFacilitySchedule = model.UserFacilitySchedule.OrderBy(x => x.DayOfWeekID).ToList();
            }

            var repositoryFacility = _unitOfWork.GetRepository <UserFacilitySchedulingDataModel>(SchemaName.Scheduling);
            var procParamsFacility = new List <SqlParameter> {
                new SqlParameter("ResourceID", DBNull.Value),
                new SqlParameter("ResourceTypeID", 6),
                new SqlParameter("FacilityID", facilityID)
            };
            var facilityScheduleResult = repositoryFacility.ExecuteStoredProc("usp_GetResourceAvailabilityByFacilityID", procParamsFacility);

            var groupByFacilities = facilityScheduleResult.DataItems.GroupBy(x => x.DayOfWeekID);

            foreach (var groupByFacility in groupByFacilities)
            {
                var facilityScheduling = new UserFacilitySchedulingModel();
                facilityScheduling.DayOfWeekID = groupByFacility.Key;
                foreach (var item in groupByFacility)
                {
                    facilityScheduling.Days = item.Days;
                    var facilityTimeScheduling = new UserFacilityTimeSchedulingModel();
                    facilityTimeScheduling.ResourceAvailabilityID = item.ResourceAvailabilityID;
                    facilityTimeScheduling.AvailabilityStartTime  = item.AvailabilityStartTime;
                    facilityTimeScheduling.AvailabilityEndTime    = item.AvailabilityEndTime;
                    facilityScheduling.UserFacilityTimeSchedule.Add(facilityTimeScheduling);
                }
                model.FacilitySchedule.Add(facilityScheduling);
            }

            if (model.FacilitySchedule != null)
            {
                model.FacilitySchedule = model.FacilitySchedule.OrderBy(x => x.DayOfWeekID).ToList();
            }

            dataItem.Add(model);
            result.DataItems = dataItem;

            return(result);
        }
 public IHttpActionResult SaveUserFacilitySchedule(UserSchedulingModel userFacilitySchedule)
 {
     return(new HttpResult <Response <UserSchedulingModel> >(_userSchedulingDataProvider.SaveUserFacilitySchedule(userFacilitySchedule), Request));
 }
 public Response <UserSchedulingModel> SaveUserFacilitySchedule(UserSchedulingModel userFacilitySchedule)
 {
     return(_userSchedulingService.SaveUserFacilitySchedule(userFacilitySchedule));
 }
예제 #10
0
 public IHttpActionResult SaveMyProfileFacilitySchedule(UserSchedulingModel userFacilitySchedule)
 {
     return(new HttpResult <Response <UserSchedulingModel> >(_userSchedulingRuleEngine.SaveUserFacilitySchedule(userFacilitySchedule), Request));
 }
예제 #11
0
        public Response <UserSchedulingModel> SaveUserFacilitySchedule(UserSchedulingModel userFacilitySchedule)
        {
            string apiUrl = BaseRoute + "SaveUserFacilitySchedule";

            return(_communicationManager.Post <UserSchedulingModel, Response <UserSchedulingModel> >(userFacilitySchedule, apiUrl));
        }