/// <summary> /// Name: Create /// Description: Method to create and event /// </summary> /// <param name="userId">UserId</param> /// <param name="eventCreatePrm">EventCreatePrm</param> public void Create(Guid userId, EventCreatePrm eventCreatePrm) { // Open transaction using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { // Create the event this.IEventMgr.Save(eventCreatePrm.Event); // Create the assistant this.IAssistantMgr.Save(new Ent.Assistant() { EventId = eventCreatePrm.Event.EventId, UserId = userId, IsOwner = true }); // Create the address eventCreatePrm.Address.EventId = eventCreatePrm.Event.EventId; this.IAddressMgr.Save(eventCreatePrm.Address); // Create the department foreach (Ent.Department department in eventCreatePrm.CollectionDepartment) { department.EventId = eventCreatePrm.Event.EventId; } this.IDepartmentMgr.Save(eventCreatePrm.CollectionDepartment); // Create dictionary of deparment Dictionary <string, Guid> dicDepartment = new Dictionary <string, Guid>(); foreach (Ent.Department department in eventCreatePrm.CollectionDepartment) { dicDepartment.Add(department.Name.ToUpper(), department.DepartmentId); } // Create event group foreach (EventGroupCreatePrm eventGroupCreatePrm in eventCreatePrm.CollectionEventGroupCreatePrm) { eventGroupCreatePrm.EventGroup.EventId = eventCreatePrm.Event.EventId; } this.IEventGroupMgr.Save(eventCreatePrm.CollectionEventGroupCreatePrm.Select(x => x.EventGroup)); // Create event group department relation ICollection <Ent.EventGroupDepartment> collectionEventGroupDepartment = new List <Ent.EventGroupDepartment>(); foreach (EventGroupCreatePrm eventGroupCreatePrm in eventCreatePrm.CollectionEventGroupCreatePrm) { foreach (Ent.Department department in eventGroupCreatePrm.CollectionDepartment) { collectionEventGroupDepartment.Add(new Ent.EventGroupDepartment() { EventGroupId = eventGroupCreatePrm.EventGroup.EventGroupId, DepartmentId = dicDepartment[department.Name.ToUpper()] }); } } this.IEventGroupDepartmentMgr.Save(collectionEventGroupDepartment); // Complete the scope scope.Complete(); } }
public IHttpActionResult Create(EventCreatePrm eventCreatePrm) { try { this.EventWrapper.Create(this.GetUserDataId(), eventCreatePrm); // return the response return(Ok(new GeneralResponse() { Error = false, Message = "" })); } catch (ManagerException mex) { // Save entry in log this.SystemLogWrapper.Register(SERVER, this.GetUserDataId(), SystemLogWrapper.TYPE_WARNING, mex); // Throw the exception return(Ok(new GeneralResponse() { Error = true, Message = mex.Message })); } catch (WrapperException wex) { // Save entry in log this.SystemLogWrapper.Register(SERVER, this.GetUserDataId(), SystemLogWrapper.TYPE_WARNING, wex); // Throw the exception return(Ok(new GeneralResponse() { Error = true, Message = wex.Message })); } catch (System.Exception ex) { // Save entry in log this.SystemLogWrapper.Register(SERVER, this.GetUserDataId(), SystemLogWrapper.TYPE_ERROR, ex); // Throw the exception throw ExceptionResponse.ThrowException("Error creating event", ERROR_CREATING_EVENT); } }