Ejemplo n.º 1
0
        /// <summary>
        /// Callback which is used for receiving of data from external service.
        /// </summary>
        /// <param name="data">Comming data from external service as EmployeeDailyArrivalTime array.</param>
        public void DataReceiver(EmployeeDailyArrivalTime[] data)
        {
            if (data != null && data.Any())
            {
                EmployeeArrivalViewModel model = new EmployeeArrivalViewModel();

                var headerToken = Request.Headers.Get(X_Fourth_Token);

                if (!string.IsNullOrEmpty(headerToken) && !string.IsNullOrEmpty(Token) && Token.Equals(headerToken))
                {
                    if (Utility.InsertEmployeeArrivalData(data, _unitOfWork))
                    {
                        model = Utility.BuildEmployeeArrivalViewModel(data, _unitOfWork);

                        if (!viewModelDictionary.ContainsKey(Model_Data_Dictionary_Key))
                        {
                            viewModelDictionary.Add(Model_Data_Dictionary_Key, model);
                            ResetEvent.Set();
                        }
                    }
                    else
                    {
                        Log.Warn(string.Format("EmployeeDailyArrivalTime records was not inserted in database for date: '{0}'", data[0].When));
                    }
                }
                else
                {
                    Log.Error(string.Format("Expected service response token '{0}' in callback post request missing or not valid for request with parameter 'date' = '{1}'", headerToken, data[0].When));
                }
            }
            else
            {
                Log.Error("Service not sent any data to callback method 'DataReceiver6'.");
            }
        }
        /// <summary>
        /// Builds a BuildEmployeeArrivalViewModel instance.
        /// </summary>
        /// <param name="data">EmployeeDailyArrivalTime array.</param>
        /// <param name="unitOfWork">UnitOfWork instance.</param>
        /// <returns></returns>
        public static EmployeeArrivalViewModel BuildEmployeeArrivalViewModel(EmployeeDailyArrivalTime[] data, IUnitOfWork unitOfWork)
        {
            EmployeeArrivalViewModel model = new EmployeeArrivalViewModel()
            {
                Items = new List <EmployeeArrivalData>()
            };

            foreach (var item in data)
            {
                var employee = unitOfWork.EmployeeRepository.GetFirstOrDefault(x => x.Id == item.EmployeeId);

                if (employee != null)
                {
                    model.Items.Add(new EmployeeArrivalData()
                    {
                        Name        = employee.Name,
                        SurName     = employee.SurName,
                        ManagerId   = employee.ManagerId,
                        Role        = employee.Role,
                        Teams       = employee.Teams,
                        Email       = employee.Email,
                        ArrivalTime = item.When
                    });
                }
            }

            return(model);
        }