/// <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); }